Javascript 如何使用Socket.IO创建多个套接字?
我不知道如何向你提出这个问题。实际上,我正在创建一个需要以下内容的应用程序:Javascript 如何使用Socket.IO创建多个套接字?,javascript,node.js,websocket,socket.io,socket.io-1.0,Javascript,Node.js,Websocket,Socket.io,Socket.io 1.0,我不知道如何向你提出这个问题。实际上,我正在创建一个需要以下内容的应用程序: 许多用户将在此应用程序上注册 每个用户都将与一个或多个组关联 我希望特定组的成员使用io.emit()向其他组成员广播消息 我有以下代码: var app=require('express')(); var http=require('http').Server(app); var io=require('socket.io')(http); app.get('/', function(req, res){
- 许多用户将在此应用程序上注册
- 每个用户都将与一个或多个组关联
- 我希望特定组的成员使用io.emit()向其他组成员广播消息
var app=require('express')();
var http=require('http').Server(app);
var io=require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname +'/index.html');
});
io.use(function(socket,next){
var handShakeData=socket.request;
query1=handShakeData._query['groupId'];
query2=handShakeData._query['message'];
next();
});
io.on('connection',function(socket){
console.log('A user connnected');
io.emit('emittedMessages','A User Connected: '+query1+" "+query2);
socket.on('disconnect', function(){
io.emit('emittedMessages','A User Disconnected');
console.log('A user disconnected');
});
});
http.listen(3000,function(){
console.log('Listening oon Port: 3000');
});
这是我的index.html文件:
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io('http://localhost:3000',{query:"groupId=bar&message=bar2"});
socket.connect();
socket.on('emittedMessages',function(msg){
$('body').append('<br/>'+msg);
});
</script>
变量套接字=io('http://localhost:3000“,{query:“groupId=bar&message=bar2”});
socket.connect();
socket.on('emittedMessages',函数(msg){
$('body')。追加('
'+msg);
});
问题
这个代码的问题是,无论我做什么,它都会向每个组中的每个人发送消息。如何将不同组的不同用户隔离以连接到不同的节点/套接字,以便将消息广播到特定组中
如果我不能正确地提出问题,我很抱歉。如果您有任何疑问,请询问我。
非常感谢您的帮助 听起来你应该使用socket.io聊天室。它们内置于多组套接字中,可以简单地向给定聊天室中的每个人广播,并且给定的套接字可以根据需要在0、1或更多聊天室中广播。你可以在这里阅读关于聊天室的内容:你能给我举个例子,让clinet加入聊天室和服务器广播。。或者任何链接?我之前评论中的链接有什么问题?我无法从该链接中理解。。如何在运行时创建聊天室?你是如何向它广播的?就在这里:。这是一个非常具体的例子,服务器将客户端套接字放入房间,然后向房间广播。请花些时间阅读文档,或就文档中您不理解的内容提出具体问题,因为重复上面写的一般内容是没有意义的。