我是node.js的新手,我想问一个关于它是如何工作的简单问题。
我过去曾使用FM进行客户端与客户端的通信和实时应用程序。例如,要创建协作应用程序,您需要查看其他用户正在执行的操作。我想用NodeJS探索它。
我有几个问题:
1)NodeJ如何处理服务器到客户端的通信?您是否可以将信息推送给客户?或者客户需要不断向服务器发出请求以查看是否有任何变化?
2)服务器和客户端之间是否存在永久连接?</ p>
3)如何处理客户端到客户端的通信(当然是通过服务器)?
提前致谢。
答案 0 :(得分:3)
3)如何处理客户端到客户端 沟通(当然是通过 服务器)?
一个简单的解决方案是在服务器和每个客户端之间打开一个websocket:
[客户A]&lt; == websocket ==&gt; [服务器]&lt; == websocket ==&gt; [客户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.');
});
});
答案 1 :(得分:1)
最近有很多关于Node.js的问题;)
正如Toby所说,Node可以做HTTP,TCP / UDP和Unix套接字。建立永久连接时,您当然可以将数据推送到客户端。
由于您在谈论基于浏览器的客户端,因此有很多方法可以实现这一点。例如,您可以使用带有Flash回退的WebSockets。如果您对低级详细信息不感兴趣并想要一个完整的包,请查看Socket.IO。
WebSockets无法做到这一点,据我所知,Flash无法做到这一点。因此,除非您想要输入Java / Silverlight,否则您需要通过服务器路由请求。