socket.io与node.js api 调用示例
来源:互联网 发布:阿里云ecs扩容 编辑:程序博客网 时间:2024/06/02 04:26
1.本文采用的socket.io.js是2.x版本,测试时请核对版本
2.官方文档链接地址如下
https://socket.io/docs/server-api/
https://socket.io/docs/client-api/
https://socket.io/docs/rooms-and-namespaces/
3.api示例
1.连接方式
客户端新建连接方式
let socket = io('http://localhost:4000', { transports: ['websocket'], query: { token: '123456' } }); //transports 为连接方式,默认为长轮询(polling) //query 为查询语句,可以传值
服务器端连接方式
const io = require('socket.io')(server(或者端口号), { serveClient: false,//是否提供客户端文件 pingInterval: 10000,//请求间隔时间(ms) pingTimeout: 5000,//连接超时时间,超时后自动关闭(ms) cookie: false,//禁用缓存});
//备注:在以前客户端会采用io.connect("ws://localhost:4000/personal");之类的写法,但这样不支持https协议,需改成wss才支持.
2.服务器端建立连接前设定操作
//有很多时候,在建立连接之前我们会有些特殊条件才能建立,比如用户登录等等//服务器端代码如下,它会在用户建立连接时,优先执行这段代码,可以让我们选择是否建立连接.客户端建立连接代码参考第一点.io.use((socket, next) => { let token = socket.handshake.query.token; if (isValid(token)) { return next(); } return next(new Error('authentication error'));});
3.关于前后端数据交互
socket.io采用事件订阅形式进行前后端交互,如前端:soket.on('方法名',方法体);后端:io.emit('方法名','传参');
4.命名空间
//我们可以建立命名空间来实现多窗口,多群的互动,示例如下//客户端创建命名空间连接:const personalChat = io('/personal');//或const personalChat = io('http://localhost:4000/personal');//服务器端创建命名空间const personalChat = io.of('/personal');personalChat .on('connection',(socket)=>{若干方法});//服务器端 用户加入某个房间 socket.join('roomName',方法体}); //离开某个房间 socket.leave('roomName',方法体);//服务器端,某个客户端向房间发送信息(可实现群聊) io.to('roomName').emit('调用前端接收信息方法');
5.向指定客户端发送信息
//服务器端代码 socket.on('say', (id,msg) => { //发送给指定某人id,实现私聊(区别在于,第一种写法发送不到其他命名空间下) socket.to(id).emit('msg', msg); 或 io.to(id).emit('msg',msg); //发送给当前客户端 socket.emit('msg','msg'); //全站发送 io.emit('msg',msg); //发送给所有客户端,包含当前客户端 socket.broadcast.emit('msg', msg); });
6.关于重连和断开连接
//服务器端 socket.on('disconnect', (reason) => { // 断开连接自动调用 });//数据包是否压缩socket.compress(true)//true 为压缩//重连,默认情况下,是支持自动连接的,也可以使用socket.open手动打开.//重新连接事件reconnect_attempt
阅读全文
0 0
- socket.io与node.js api 调用示例
- socket.io node.js mysql
- 使用node.js与socket.io搭建即时聊天系统
- 从helloworld开始构建一个node.js+socket.io+express4实时应用示例
- 从helloworld开始构建一个node.js+socket.io+express4实时应用示例
- ubuntu install node.js socket.io
- Socket.IO 和 Node.js 入门
- node.js+socket.io配置详解
- node.js+socket.io+聊天室源码
- Socket.IO 和 Node.js 聊天程序
- node.js+socket.io私人聊天
- Socket.IO 和 Node.js 入门
- Socket.IO 和 Node.js 聊天程序
- Node.js+socket.io简单在线聊天
- Node.js+socket.io在线聊天室
- Socket.IO 和 Node.js 入门
- Socket.IO 和 Node.js 入门
- Node.js、Express、Socket.io 入门
- 让我试验一下
- 自用(Spring 和Hibernate 整合笔记和jar包)
- Activity是什么
- vector用法
- Unity使用DLL
- socket.io与node.js api 调用示例
- hdu 1873 看病要排队(优先队列)
- Kotlin for Android(五)Kotlin类和对象
- 串的基本操作(C++)
- E
- VS2015快捷键
- [FWT] 51nod 算法马拉松26 A. A国的贸易
- 一道android笔试题目
- 自用(Spring 配置文件 和详细笔记)