我已经使用Node JS&socket.io完成了几个项目。
在我的上一个项目(该项目建立一个类似聊天室的功能)中,我做了以下工作。
我绘制了一个空白框,用于显示聊天消息。
然后,我连接到socket.io服务器。
当连接请求发送到服务器时,我还将该聊天室的所有旧聊天消息推送到浏览器。
在聊天会话的中间,如果有任何用户巧合地断开连接(网络故障),则在重新连接后,所有旧的聊天消息将被提取并覆盖在先前的消息上。
现在,我想我有可能会错过一些聊天消息的显示。到目前为止,我还没有看到这种情况发生。
我当时想的是,如果某人刚好在建立连接时传递了一条消息,将会发生什么。创建的新连接是否有可能无法收到消息?
如果这听起来像是一个基本问题,请原谅我,我无法考虑这个问题!
最佳答案
我在想的是,如果某人刚好在建立连接时传递了一条消息,将会发生什么。创建的新连接是否有可能无法收到消息?
最终,我不这么认为。节点是单线程服务器。这两个事件将以一种简单的顺序执行。至少在功能级别上,您的应用程序代码永远不会以交错方式运行,因为它会同时处理新连接和新消息。
当然,您的各种回调可能相互交错,因此您必须对此进行推理。但是一旦进入函数内部,该函数将运行完全,而您的任何数据都不会被代码的任何其他部分修改。
关于javascript - Node + socket.io聊天服务器..我能错过一些消息吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22103750/