3)如何处理客户端到客户端 沟通(当然是通过 服务器)?
一个简单的解决方案是在服务器和每个客户端之间打开一个websocket:
[客户A]< == websocket ==> [服务器]< == websocket ==> [客户B]
例如,如果您使用Socket.IO,那么以这种方式进行客户端到客户端的通信非常容易。
当服务器从一个客户端收到消息时,您只需将其广播给所有客户端或根据您的用例将其发送到一个特定的客户端。
一些使用Socket.IO的示例代码:
var socket = io.listen(server); socket.on('connection', function(client) { client.on('message', function(msg) { broadcast(msg); // broadcast message to all clients // OR socket.clients[session_id].send(msg); // send message to one client }); client.on('disconnect', function( ) { console.log('Client Disconnected.'); }); });
最近有很多关于Node.js的问题;)
正如Toby所说,Node可以做HTTP,TCP / UDP和Unix套接字。建立永久连接时,您当然可以将数据推送到客户端。
既然您在谈论基于浏览器的客户端,那么有很多方法可以实现这一点。例如,您可以使用带有Flash回退的WebSockets。如果您对低级细节不感兴趣并想要一个完整的包装,请查看 Socket.IO 。
WebSockets无法做到这一点,据我所知,Flash无法做到这一点。因此,除非您想要输入Java / Silverlight,否则您需要通过服务器路由请求。