我正在尝试使用Web套接字构建实时应用程序。目前我正在使用ajax pull(每个固定间隔)从客户端获取数据库表中的新更改。我并不完全了解如何实时应用。
当前实施:
在我的应用程序中,我通过数据库(MariaDB)中的ajax轮询获取数据并在客户端的表中显示它。
预期行为:
没有来自客户端的轮询,并且无论何时数据库端发生更改,它都应该在所有连接的客户端进行更新。
在我搜索期间,我遇到了一些解决方案:
请帮助我找到更好的解决方案。
答案 0 :(得分:1)
听起来不错!
的Node.js
甲骨文(+ CQN)
Socket.io
答案 1 :(得分:0)
Chintan,请查看socket.io,因为这将涵盖您想要的一切
Socket.IO支持实时双向基于事件的通信。它适用于每个平台,浏览器或设备,同样关注 可靠性和速度。
服务器端
在您的node.js服务器上,您需要设置引用连接的' 事件。此连接事件是一个默认事件socket.io为我们提供了我们可以在客户端(套接字)连接时监听和触发的事件。所以在服务器中我们会有类似的东西:
socket.on('connection', function() {
console.log('Someone just joined');
});
因此,对于连接我们服务器的每个套接字,将输出刚刚加入
的人为了进一步扩展,您可以添加一个emit事件:
socket.on('connection', function() {
console.log('Someone just joined');
socket.emit('hello', {
message: 'Hello'
}
});
因此,当客户端连接此时,将发出事件事件。我们可以在客户端倾听这个事件,如下所示:
客户端
socket.on('hello', function(data) {
console.log(data.message); // Hello
});
Socket.io能够双向传输数据(双向),因此您也可以从客户端发出事件并在服务器上侦听
你还说你会让所有客户对某个事件作出反应,为此而不是做一个 socket.emit 你会改为 io.emit 。请记住,套接字只发送到该套接字。 Io发送到包括发件人在内的所有套接字,并使用 socket.broadcast.emit 将发送给所有连接的客户端,但不发送给发件人。