在连接时连接套接字房间
Joining socket io room on connect
我正在尝试使登录用户加入某个套接字。IO室接通。根据我在网上找到的任何例子,我似乎已经从客户端发出了一些动作,以便能够加入一些房间。例如:
socket.on('connect', function() {
socket.emit('join', 'room1');
});
Server.js:
io.sockets.on('connection', function(socket) {
socket.on('join', function(room) {
socket.join(room);
});
});
根据大多数教程,它应该可以工作。
我想做的是:
socket.on('connect', function() {
socket.join('room1');
});
但是它似乎不起作用,因为我从服务器发出的任何msg都不会被客户端捕获。知道我哪里做错了吗?这在一般情况下可能吗?
这应该是您需要的。请随意通过客户输入您想要的任何房间名称。只有服务器可以处理为房间分配套接字。
服务器:io.sockets.on('connection', function(socket) {
socket.on('join', function(room) {
socket.join(room);
});
});
客户:socket.emit('join', roomNum);
客户端没有.join()
方法。房间纯粹是一个服务器端构造,客户端对它们一无所知。
你的第一个代码块就是你想要做的事情。您向服务器发送您设计的消息,要求它将套接字连接到一个房间,并且在服务器端执行.join()
。
这很容易实现。您所需要做的就是传递一个服务器能够理解的查询参数。
下面的例子没有经过完全的测试,但是这个想法是可行的。在本例中,roomname由客户端上的window.location.href
确定。
// Last segment of path is roomName
var roomName = window.location.href.substr(window.location.href.lastIndexOf('/') + 1);
var socket = io({
query: {
roomName: roomName,
},
});
服务器var io = require('socket.io')(server);
io.on('connection', function(socket) {
var query = socket.handshake.query;
var roomName = query.roomName;
if(!roomName) {
// Handle this as required
}
socket.join(roomName);
});
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 如何使用密码检测网络中的状态连接
- 如何处理node.js节点mongodb中的连接和查询队列
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- Twilio-显示所有连接参与者的远程参与者视频
- 操作放置在画布上的元素之间的连接
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- jQuery UI可排序-多连接列表拖动
- 如何使用offer/answer交换来自两个对等连接的流
- 在Qualtrics中,介绍如何动态连接两个滑块
- 使用优化器在慢速连接上加载main.js时需要js超时
- 如果连接类型为none,则Javascript Function Only警报
- GTK百老汇支持同时连接
- 在node.js中写入ECONNRESET错误和套接字连接检查
- Strophe.js MUC:创建一个房间并连接多个房间
- 如何在 socket.io 连接房间
- 在连接时连接套接字房间
- Nodejs将连接的套接字保存在房间上
- 连接的房间
- (Socket.io)一个插座连接多个房间