Socket.io:如何让每个人都获得不同的渠道?

我目前正在开发一个小网站,我想让每个人都听一个不同的频道,因为它就像一个网站,search服务器端的东西,然后回复客户端。 我想到的唯一想法就是这样的:

客户端:

var randomnum = Math.floor((Math.random() * 100) + 1); socket.emit('getnumber', randomnum); // Then listen to that channel for incoming stuff socket.on(randomnum, function(msg){ [...] 

服务器端:

 socket.on('randomnum', function(randomnumget){ // Do things with it then [...] socket.emit('getnumber', 'stuff'); }); 

但是,这样做超过4将是一种困难,我敢肯定还有另一种简单的方法来做到这一点! 谢谢

这里是我可能的实现想法/stream程。 目前,还不清楚你的应用程序需要处理什么,所以最终的实现可能需要改进。

我假设你用某种标识来识别你的用户,把它存储在cookie或localstorage中。

首先,当用户访问您的站点时,它请求套接字通道连接(例如GET /通道)。 在服务器端,您可以实现为每个用户提供唯一标识的查询,它可以是UUID或其他基于时间的标识。 为了确保用户不会得到完全相同的ID,可以将ID存储在Redis或其他数据库中。

此外,例如,您可以使用Redis密钥EXPIRE在10分钟后从DB中除去密钥。

在你的例子中使用随机数不是最好的select,因为它往往很快就会碰撞。 例如,要获得更好的独特渠道名称,你可以做: sha256(Date.now() + Math.random())