javascript-websockets和数据库更新(按更改)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-websockets和数据库更新(按更改),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1696字,纯文字阅读大概需要3分钟。
内容图文
![javascript-websockets和数据库更新(按更改)](/upload/InfoBanner/zyjiaocheng/883/aef67dcaeca94bb88e8989b0427adf30.jpg)
我今天开始学习Websocket,因为我想拥有一个可以获取实时更新的体系结构.
我创建了第一个websockets node.js和socket.io应用程序,因此我可以通过javascript在客户端和服务器之间进行通信.很好
但是我需要可以与MySQL进行通信的东西,以便对于某个表上的每个更改,它必须告诉客户端有一个更改.
因此,我一直在考虑node.js服务器与观察数据库的PHP脚本进行通信.但是然后我还需要拉长请求更改,因此无论如何我都可以使用ajax进行更改,因此它将毫无用处.
所以我的问题是:如何实现从数据库表或某个查询中获取实时数据更改,从而将更新发送到所有实时连接的客户端,而无需进行长时间轮询?
谢谢 !
解决方法:
So my question: How can I achieve to get real-time data changes from a
table of the database or from a certain query…
有一个模块可以监视MySQL事件:mysql-events
官方示例:
var MySQLEvents = require('mysql-events');
var dsn = {
host: _dbhostname_,
user: _dbusername_,
password: _dbpassword_,
};
var mysqlEventWatcher = MySQLEvents(dsn);
var watcher =mysqlEventWatcher.add(
'myDB.table.field.value',
function (oldRow, newRow, event) {
//row inserted
if (oldRow === null) {
//insert code goes here
}
//row deleted
if (newRow === null) {
//delete code goes here
}
//row updated
if (oldRow !== null && newRow !== null) {
//update code goes here
}
//detailed event information
//console.log(event)
},
'match this string or regex'
);
… which will send the update to all clients, that are connected in real-time,
without long polling?
您可以使用socket.io并通过在客户端上执行以下操作完全阻止初始http轮询:
var socket = io({transports: ['websocket'], upgrade: false});
为了避免客户端使用轮询,请将以下行添加到服务器:
io.set('transports', ['websocket']);
并将事件从mysql-event发送到所有连接的(socket.io)客户端,请使用以下命令:
io.sockets.emit('db-event',eventDataObj)
内容总结
以上是互联网集市为您收集整理的javascript-websockets和数据库更新(按更改)全部内容,希望文章能够帮你解决javascript-websockets和数据库更新(按更改)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。