リアルタイムのデータを提供する websocket アプリケーションを実装しています。いくつかの調査の後、目的の出力を提供するコードを思いつきました。しかし、これが正しい方法ではないことはわかっています。それを正しくするための提案をしてください。
サーバー.js
var http = require('http');
var server = http.createServer(function (request, response) {
response.writeHead(404);
response.end();
});
var port = 8889;
server.listen(port, function () {
console.log('server is listening on port ' + port);
});
var WebSocketServer = require('websocket').server;
wsServer = new WebSocketServer({
httpServer: server,
autoAcceptConnections: false
});
var mysql = require('mysql');
var _livedata;
var db_con = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database: 'dev_db'
});
function getLiveData()
{
db_con.query('SELECT * from live_data', function (err, rows, fields) { //*
if (err) throw err;
_livedata = rows[0];
});
}
setInterval(getLiveData, 2000); // update _livedata
wsServer.on('request', function (request) {
var connection = request.accept('chat', request.origin);
setInterval(sendLiveData, 5000); // sends updated _livedata
function sendLiveData() {
connection.sendUTF(JSON.stringify({
data: _livedata
}));
}
});
クライアント.js
socket = new WebSocket("ws://localhost:8889", 'chat');
socket.addEventListener("open", function () {
var a = socket.send(JSON.stringify("Please send data"));
});
socket.addEventListener('message', function (data) {
var parsedData = JSON.parse(data.data).vehicle;
console.log(parsedData)
});
- live_data テーブルは 5 秒ごとに更新されます。
私はnode.jsとwebsocketに非常に慣れていません。ヘルプ!!