Nodejsnetworking – 实时通信

我是新来的node.js,我想问一个关于它是如何工作的简单问题。

过去,我曾经使用FM来进行客户端与客户端的通信和实时应用程序。 例如,创build一个协作应用程序,您需要查看其他用户正在做什么。 我想探索使用NodeJS。

我有几个问题:

1)NodeJ如何处理服务器到客户端的通信? 你有什么办法将信息推送给客户? 或者客户端需要不断向服务器发出请求,以查看是否有任何改变?

2)是否有像服务器和客户端之间的永久连接的东西?

3)如何处理客户端到客户端的通信(当然是通过服务器)?

提前致谢。

3)如何处理客户端到客户端的通信(当然是通过服务器)?

一个简单的解决scheme是在服务器和每个客户端之间打开一个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的问题;)

  1. 正如Toby所说,Node可以执行HTTP,TCP / UDP和Unix套接字。 当您build立永久连接时,您当然可以将数据推送给客户端。

  2. 既然你在谈论基于浏览器的客户端,那么有很多方法可以实现这一点。 例如,您可以使用带有Flash后备的WebSocket。 如果您对低级别的细节不感兴趣并想要一个完整的包,请查看Socket.IO 。

  3. WebSocket不能做到这一点,Flash也不能做,据我所知。 所以除非你想进入Java / Silverlight的土地,否则你需要通过你的服务器路由请求。