我正在开发一个应用程序,该应用程序在数据库发生更新时将数据推送到客户端。问题在于 node.js 上的 websocket 侦听与节点不同的端口上的数据库。我之前的那个人写了一段代码,然后把它扔给了我。该节点看起来有点像这样:
var handler=http.createServer(function(req, res){
session(req, res, function(req, res, body) {
if (!req.session || !req.session.data || !req.session.data.uid || req.session.data.uid == '' || !req.session.data.role || req.session.data.role =='') {
var uri = url.parse(req.url).pathname;
if(req.method == 'GET' && uri =="/attendance-node/getMonthFromReport") {
var uri = url.parse(req.url).pathname;
var url_parts = url.parse(req.url,true);
processgetMonthFromReport(req, res, uri, url_parts.query);
return;
}
res.writeHead(401, {"Content-Type": "text/plain"});
res.write("401 Unauthorized");
res.end();
return;
}
if(req.method == 'POST') {
var uri = url.parse(req.url).pathname;
var qs = require('querystring');
var POSTVAR = qs.parse(body, '&', '=', {"maxKeys" : 0});
//var POSTVAR=JSON.parse(body);
handleRequest(req, res, uri, POSTVAR);
}
if (req.method=='GET') {
var uri = url.parse(req.url).pathname;
var url_parts = url.parse(req.url,true);
handleRequest(req, res, uri, url_parts.query);
}
});
}).listen(3014,"127.0.0.1");
var io = require('socket.io').listen(8077,"127.0.0.1");
sys.puts("websocket Server running on port 8077");
io.configure(function () {
io.set('transports', ['websocket', 'flashsocket', 'xhr-polling','jsonp-polling']);
io.set('log level', 0);
});
io.sockets.on('connection', function (socket) {
io.sockets.emit('init',"i am working via websocket");
});
如您所见,节点正在侦听 3014 和 8077 上的套接字。现在我应该如何为套接字上接收到的消息提供处理程序并将其转发到节点的客户端?
注意:我对 Web 开发相当陌生。所以基本上我被扔进了水里,现在我正在学习游泳。
PS 另外,套接字的客户端是什么样的?
PPS 已经处理好向套接字发送更新通知的数据库。它以 POST 请求的形式出现。提前谢谢!!