NodeJs socket.io连接参数中传入查询字符串
2017年2月8日 · 37 字 · 1 分钟
socket.io一般会配合room进行消息转发,目前我的做法如下:
- 服务端
io.on('connection',function(socket){
socket.on('join',function(roomId){
socket.join(roomId);
});
});
- 客户端
var socket = io('http://localhost:8888');
socket.on('connect',function(){
socket.emit('join','live1');
});
可以发现客户端多出了一次emit操作。
查阅socket.io文档发现,在连接URL中是可以传入查询字符串的,服务端也可以获取到。更新后的代码如下:
- 服务端
io.on('connection',function(socket){
if (socket.handshake.query.roomId === undefined) {
console.log('非法请求');
return;
}
socket.join(socket.handshake.query.roomId);
});
- 客户端
var socket = io('http://localhost:8888?roomId=live1');
socket.on('connect',function(){
});
这样就可以少一次emit操作,减少客户端以及服务端一部分压力。