1

リアルタイムのデータを提供する 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に非常に慣れていません。ヘルプ!!

4

0 に答える 0