3

嗯......我的第一个 express + socketio 节点应用程序启动并运行。

Socketio 几乎在我的应用程序的每个页面上都使用,因为当添加新条目时,这些页面上显示的所有“列表”都应该使用 server-push 进行更新。

所以我得到了我的主要 app.js 文件 + 一个包含所有 route.js 文件的路由目录。现在我需要为每条路由使用不同的 socketio 事件 + 函数,因为这些页面上发生了不同的事情。

现在的问题是如何访问我的快速服务器以初始化 socketio 对象?

// app.js
var server = app.listen(app.get('port'), function(){...});
var io = socketio.listen(server);
// socket.io code here
// the code from here on should be different for each route.js file

或者换句话说:

如何将 socket.io 的所有事件和函数定义排除到相应的路由文件中,以便为每个页面定义不同的 socket.io 事件和函数?套接字当然可以始终在同一个端口上运行(我希望没问题?!)。

我希望这是可以理解的……有点难以解释。

最好的问候帕特里克

4

1 回答 1

2

根据用户连接的路由,您可以使用socket.io库中的命名空间向特定的用户组发送消息。

向所有连接的用户发送消息/news

io.of('/news').emit('update',{message:"a new article is available"});

至于客户端,一个简单的事件监听器会做(假设用户是/news命名空间)

socket.on('update',function(data){
 alert(data.message);
});

恕我直言,您不需要不同的事件,只需使用相同的事件并在每条路线中以不同方式处理它们。

于 2013-03-31T20:12:41.337 回答