您现在的位置是:首页 > 正文

io协议服务器,WebSocket协议-Socket.io 客户端API

2024-04-01 05:32:27阅读 2

客户端API

IO

如果使用的是标准化的JS库,则暴露为io这一命名空间;如果是用Node 编译,则使用require('socket.io-client')。

引入socket.io的JS库

const socket = io('http://localhost');

导入socket.io模块

const io = require('socket.io-client');

// or with import syntax

import io from 'socket.io-client';

io.protocol

数值型

表示协议版本号

io(url[, options])

url (字符串)连接的服务器url,默认的指向widnow.location

option (Object)forceNew (布尔型)是否重用当前已存在的链接。

Return Socket

const socket = io('http://localhost:8000')

io([url], [, options])

url (String) (defaults to window.location)

options (Object)

Returns Socket

重点说一下options中transports的配置。

使用socket.io默认情况下,首先建立长轮询连接,然后升级成websocket,也可以设置直接成websocket,这样设置后socket.io不能降级,不会根据当前环境自动选择最佳方式实现通讯。

//默认设置

const socket = io('http://localhost:8000', {transports: ['polling', 'websocket']});

//设置成websocket

const socket = io('http://localhost:8000', {transports: ['websocket']});

Socket

socket.id

字符串

标识socket session独一无二的符号,在客户端连接到服务端被设置。

const socket = io('http://localhost:8000');

console.log(socket.id); // undefined

socket.on('connect', () => {

console.log(socket.id); // 'G5p5...'

});

socket.connect()

Returns Socket

//手动打开socket

const socket = io({

autoConnect: false

});

// ...

socket.connect();

//socket断开重新连接

socket.on('disconnect', () => {

socket.connect();

});

socket.emit(eventName[, ...args][, ack])

eventName (String)向socket发送的事件名

args 向socket发送的参数

ack 响应服务器确认消息的应答

Returns Socket

socket.emit('add user', 'tobi', (data) => {

console.log(data); // receive data

});

// server:

io.on('connection', (socket) => {

socket.on('add user', ({userName}, fn) => {

fn('receive data');

});

});

socket.on(eventName, callback)

eventName (String)事件名

callback (Function)

Returns Socket

注册响应服务器事件的事件处理器

//客户端监听用户加入聊天室

socket.on('user joined', ({userName, count}) => {

})

socket.commpress([value])

value (布尔型)

Returns Socket

设置修改器,是否对向服务器传输的数据进行压缩。默认为true,即压缩。

socket.compress(false).emit('add user', { userName: 'ningxiaojie' });

socket.close()

Returns Socket

手动关闭客户端对服务器的链接

socket.disconnect()

用法同 socket.close()

Event

Event: 'connect'

连接成功后执行该函数

socket.on('connect', () => {

console.log('连接服务器成功')

})

Event: 'connect_error'

error (Object) 错误对象

连接错误时触发事件处理器。

socket.on('connect_error', (error) => {

// ...

});

Event: 'disconnect'

reason (String) 服务器或客户端断开连接的原因

断开连接时触发事件处理器

socket.on('disconnect', (reason) => {

// ...

});

Event: 'reconnect'

attempt (Num) 重连次数

重连成功时触发事件处理器

socket.on('reconnect', (attempt) => {

// ...

});

Event: 'reconnect_attempt'

attempt (Number) 重连次数

尝试重连时触发事件处理器

socket.on('reconnect_attempt', (attempt) => {

// ...

});

Event: 'reconnecting'

attempt (Number) 重连次数

尝试重连时触发事件处理器

socket.on('reconnecting', (attempt) => {

// ...

});

Event: 'reconnect_error'

error (Object) 错误对象

重连错误时触发事件处理器

socket.on('reconnect_error', (error) => {

// ...

});

Event: 'reconnect_failed'

重连失败时触发事件处理器

socket.on('reconnect_failed', () => {

// ...

});

下一篇讲述Socket.io 服务端API

网站文章

  • java 设置年月日_java年月日的操作

    public static List getWeekDay(String strDate) {List list = new ArrayList();//第几周,周几String nReturn = ...

    2024-04-01 05:32:19
  • phpcustom长时间不用会停用?

    phpcustom长时间不用会停用?

    phpcustom长时间不操作只是会关闭软件界面而已,软件还是能正常运行网站!如果需要操作,重新打开界面就行,更加具体的描述,看下图软件提示的文字

    2024-04-01 05:32:13
  • ApplicationContext和ServletContext

    ApplicationContext和ServletContext转自:http://www.cnblogs.com/tuhooo/p/6491903.htmlServletContext与Web应用以及Spring容器启动一、ServletContext对象获取DemoServlet容器在启动时会加载Web应用,并为每个Web应用创建唯一的ServletC

    2024-04-01 05:31:32
  • 大规模采用 TypeScript 之后的 10 个见解

    大规模采用 TypeScript 之后的 10 个见解

    几年前,彭博社工程部决定采用 TypeScript 作为首选开发语言。在这篇文章中,将分享我们在这次迁移过程中学到的经验教训以及一些见解。总体而言,我们认为 TypeScript 是个完...

    2024-04-01 05:31:25
  • 后端编程-

    后端编程-

    网站数据存储在一个地方, 数据变化,不用更改代码。1.可以接收前端请求,2.处理业务逻辑3.响应数据给前端编程语言 javascript运行环境 nodejsNode.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。

    2024-04-01 05:31:18
  • 【射频知识】PCB材料/层叠/信号注入设计与传输线实现形式的性能比对

    【射频知识】PCB材料/层叠/信号注入设计与传输线实现形式的性能比对

    PCB的设计从基础的模型到实际加工的实现形式,都需要注意,才能使最终加工出来的PCB达到我们预期的设计指标。

    2024-04-01 05:30:36
  • 工作了?人与人之间的艺术

    1、去别人家做客,当主人的话可多可少,甚至经常劝你喝茶或提建议看看电视时,你就该告辞了。人总是在感到无话可说时,才提醒别人做一些无关紧要的事。再待下去,你可能就不受欢迎了。2、正在对上司汇报工作,他的眼睛没有专注地看着你,或者他的手指不经意的在桌子上扣几下,很可能他已对你的汇报不满意了。如果你进去时,他脚正在桌子下无聊地晃动,你说话间,他的脚忽然间停止了晃动,那他已经对你的话产生了浓厚的兴趣。 3

    2024-04-01 05:30:28
  • 做了4年的开发,为何我决意转向产品经理

    做了4年的开发,为何我决意转向产品经理

    14年毕业的我,算上提前半年进入职场的话,至今已有将近5年的时间!在这么一段说短也不短的职业生涯里,前两年基本算是小打小闹,待的最长的一家公司,也只有一年整。然而,在这小打小闹的两年里,我的运气还算不...

    2024-04-01 05:30:21
  • linux eclipse安装目录在哪,Eclipse在Linux下在哪里寻找eclipse.ini

    我刚刚设置了Ubuntu工作站,并想向eclipse.ini添加一些设置。 当我搜索文件时,我发现:/etc/eclipse.ini/usr/lib/eclipse.ini我的问题是:Eclipse实...

    2024-04-01 05:29:41
  • Level3-Unit1-Part2#Dialogue·A Going Away Party

    知识点:欢送聚会(散伙饭),新工作,离开,预定餐馆,与某人确认What’s the matter?Why do you look so sad?Ada has a new job.She’s going to Beijing.Really? When is she leaving?She’s leaving at the end of next week.That so...

    2024-04-01 05:29:29