socket.io与node.js api 调用示例
2017-07-21 21:36
751 查看
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.连接方式
客户端新建连接方式
服务器端连接方式
2.服务器端建立连接前设定操作
3.关于前后端数据交互
4.命名空间
5.向指定客户端发送信息
6.关于重连和断开连接
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
相关文章推荐
- iOS + node.js使用Socket.IO框架进行实时通信示例
- Vue与Node.js通过socket.io通信的示例代码
- dotnet调用node.js写的socket服务(websocket/socket/socket.io)
- NodeJS Socket.io
- Node.js+Socket.IO搭建WebSocket实时应用
- Socket.IO 和 Node.js 入门
- 用node.js(socket.io)实现数据实时推送
- Node.js、Express、Socket.io 入门
- TWaver html5 + NodeJS + express + websocket.io + redis 快速搭建项目(三)
- 使用Node.js和Socket.IO扩展Django的实时处理功能
- 使用Node.js+Socket.IO搭建WebSocket实时应用
- node.js 用socket实现聊天的示例代码
- [Node.js]29. Level 6: Socket.io: Setting up Socket.io server-side & Client socket.io setup
- nodejs+socket.io.js
- TWaver HTML5 + Node.js + express + socket.io + redis(三)
- 离线谷歌卫星地图加载服务中间件调用示例For ArcGIS JS API
- nodejs+socketio+redis的一些小尝试
- node.js利用socket.io实现多人在线匹配联机五子棋
- Node.js中调用mysql存储过程示例
- 使用Node.js+Socket.IO搭建WebSocket 实现多人群聊