从事件名称中提取套接字 io 服务器
Posted
技术标签:
【中文标题】从事件名称中提取套接字 io 服务器【英文标题】:Abstracting socket io server from event name 【发布时间】:2016-09-09 05:40:48 【问题描述】:我正在尝试创建一个可以监听变量事件名称(客户端将启动)的 SocketIO 服务器,例如
socket.on( X, function(msg) // X = any event name provided by the client
io.emit(X, msg); // Emit events to all the clients listening to the same event name
);
例如,如果客户端发出类似"eventX"
的事件,服务器应该能够侦听"eventX"
并发送给连接到服务器并侦听“eventX”的所有其他客户端。
我的想法是,服务器不应该关心一组客户端使用的事件的名称,并且当一组客户端使用不同的名称时,同一段服务器代码应该能够发出事件交流。
【问题讨论】:
您可以很容易地做到这一点,方法是创建一个服务器侦听的主消息名称,然后将客户端发送时的第一个参数作为客户端选择的子消息名称。可以发送特定于子消息名称的其他参数。这可以满足您的要求。 @jfriend00 这听起来是一个很好的解决方案!当客户端数量增加时,这种方法会不会有任何陷阱(当然,当这种情况发生时,我会横向扩展到不同的端口和虚拟机)? 扩展到大量客户端不应该真正受到此方案的影响,只要您只向需要它的特定客户端发送信息。如果您过度广播(例如,向许多不需要它们的客户端发送消息),那么事情可能会变得低效。 【参考方案1】:您可以很容易地做到这一点,方法是创建一个服务器侦听的主消息名称,然后将客户端发送时的第一个参数作为客户端选择的子消息名称。可以发送特定于子消息名称的其他参数。这可以满足您的要求。
【讨论】:
以上是关于从事件名称中提取套接字 io 服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Express 4 路由中使用 socket.io 向连接的套接字发出事件?