我是node.js和socket.io的新手。我有一个测试服务器,其中包含来自socket.io站点(http://socket.io/#how-to-use)的示例代码。
我不知道从哪里开始做以下
我想我需要在node.js应用程序的服务器端“handler”函数中创建某种路由,但我不确定这是否是正确的方法。
有人可以帮我指出正确的方向吗?
非常感谢帮助新手!
答案 0 :(得分:0)
Socket.io让这很容易。它有名称空间和房间。例如,要创建两个不同的命名空间,您可以这样做:
var io = require('socket.io').listen(app, {origins: '*:*', log: false});
var page1 = io.of('/page1').on('connection', function (socket) {
//you can use socket in here
});
var page2 = io.of('/page2').on('connection', function (socket) {
//you can use socket in here
});
您现在有两个名称空间。在每个人的内心,你可以听取事件。例如,如果您发送了类型事件:
socket.on('type', function(text){
io.sockets.emit('type', {'whatWasTyped': text]);
}
这会向所有连接的客户端发送一个类型事件。
如果您想要更多地分隔名称空间,您可以创建房间。以下是如何在命名空间中创建房间:
var page1 = io.of('/page1').on('connection', function (socket) {
socket.on('add', function(area){
socket.join(area);
};
});
每次与想要加入的房间建立连接时,您都必须发送添加事件。然后,您可以只向该房间发送消息。
io.of('/users').in(area).emit('event', {'event': yourInfoHere});
您可以通过运行以下方式获取有关连接的信息:
socket.get('user', function(err, info){ //in here });
这是我头脑中的一些信息,来自socket.io wiki:https://github.com/LearnBoost/socket.io/wiki/Rooms。
我还没有测试过,如果你还有其他一些问题,请告诉我。