节点.js无需 Socket.IO 即可聊天
Node.js chat without Socket.IO
我刚刚开始学习 Node.js当我学习fs.watchFile()
方法时,我想知道是否可以用它有效地构建聊天网站(和fs.writeFile()
),例如 Socket.IO 它是稳定的,但我相信不是 100% 稳定(几个回退,包括 flash)。
使用fs.watchFile
也许也可以用来非常简单地保留聊天的历史记录(因为JSON将在现场使用)。
文件可以用JSON格式化,这样只有最后一个聊天者的消息才会被带到DOM(或者任何使文件更新时有效地"获取"消息的方式)。
我还没有尝试过,因为我仍然需要更多地了解 Node,甚至更多才能将其与 Socket.IO 进行比较,但你对此有何看法?这可能是一种高效/稳定的聊天方式吗?
fs.watchFile()
可用于监视本地文件系统(在服务器上)中对文件的更改。这不会解决您在浏览器中更新所有客户聊天消息的需求。你仍然需要Web套接字,AJAX或Flash(或 socket.io,它处理所有这些)。
在客户端中通常可以执行的操作是尝试使用 Web 套接字。如果浏览器不支持它们,请尝试使用 XMLHttpRequest。如果失败,请回退到 Flash。这需要大量的编程工作,并且还必须由node.js服务器处理。Socket.io 为你做到这一点。
此外,socket.io 非常稳定。回退到Flash不是因为它的不稳定,而是由于缺乏浏览器对更好的解决方案(如Web Sockets)的支持。
聊天文件存储在平面文件 JSON 中不是一个好主意,因为如果要操作文件,则必须解析和序列化整个 JSON 对象,随着 JSON 对象大小的增加,这将变得非常慢。文件系统模块的监视方法也不适用于所有操作系统。
您也不能将 Node.js 与 Socket.IO 进行比较,因为它们是完全不同的东西。 Socket.IO 是一个 Node 模块,用于在浏览器和服务器之间实时传输。你需要什么取决于你在做什么。如果您需要聊天记录,那么您应该使用MongoDB或MySQL等数据库。监视文件的更改不是一种有效的方法,您应该在收到消息时发送消息。
结论不,使用 fs.watchFile()
和 fs.writeFile()
是一个非常糟糕的主意,因为竞争条件会因并发文件写入而发生,除此之外,fs.watchFile()
使用轮询来检查文件是否已更改。相反,您应该使用 Socket.IO 并将消息推送到其他客户端/在收到消息时将它们存储在数据库中。
您可以使用 javascript setTimeout 和 setInterval 的长池化方法
长池化
基本上在 Ajax 频率和服务器响应时间上工作的长池化。
服务器将在一定时间后(例如 50 秒后)响应,如果没有通知或消息,否则它将使用数据响应,当客户端获得响应时,客户端 JavaScript 发出另一个新更新请求并等到响应 这个过程是无休止的,直到服务器运行
- 如何使用Socket.io和Node.js开发大型聊天应用程序
- 如何使用socket IO检查有多少参与者连接到我的聊天室
- 发送消息时,Socket.io聊天重新加载页面
- Socket.IO聊天不发送和/或接收消息
- 向聊天室发送消息 socket.io 节点.js
- 如何为动态聊天室配置高速公路(crossbar.io)
- socket.io 聊天示例 - 帆.js
- 节点.js无需 Socket.IO 即可聊天
- 如何在一个视图中启用聊天小部件 Smooch.io
- Js 节点 - socket.io 聊天修饰符
- 节点.js Socket.io 聊天服务器 SSL
- Socket.io 聊天应用程序显示检测到的事件发射器内存泄漏.添加了 11 位听众.使用 emitter.setMax
- socket.io 可以用来制作像 watsapp 这样的聊天应用程序吗?
- Socket.io 聊天应用程序,也可以发送图像甚至文件
- 如何在JS socket.io聊天中处理异步用户数据
- socket.io聊天示例-表单提交问题
- socket.io聊天不起作用
- 使用socket-io制作一个基本的聊天应用程序
- 使用套接字创建基本聊天应用程序.io和Node . js
- 套接字中fn()的含义.IO聊天示例代码