Node.js不更新客户端
我有一个场景,其中节点通过net.socket连接从一台服务器提取数据,然后使用sockets.io输出到客户端浏览器。来自服务器的数据几乎每分钟更新一次。如果我将数据输出到控制台,它工作正常,在更新发生时显示更新。然而,我似乎无法通过socket.io将数据推送到浏览器。我擅长PHP,但对javascript完全是新手。但我明白,当数据从服务器更新时,它应该触发一个“事件”,导致socket.io将新数据推出。我非常感谢你的帮助Node.js不更新客户端,node.js,socket.io,Node.js,Socket.io,我有一个场景,其中节点通过net.socket连接从一台服务器提取数据,然后使用sockets.io输出到客户端浏览器。来自服务器的数据几乎每分钟更新一次。如果我将数据输出到控制台,它工作正常,在更新发生时显示更新。然而,我似乎无法通过socket.io将数据推送到浏览器。我擅长PHP,但对javascript完全是新手。但我明白,当数据从服务器更新时,它应该触发一个“事件”,导致socket.io将新数据推出。我非常感谢你的帮助 //set all variables and modules
//set all variables and modules includes here
// [...]
server = http.createServer (function(req, res) {
res.writeHead(200, {'Content-Type:' 'text/html'});
res.end(index);
}).listen(8080, localhost);
//connection to stats server
var socket = new net.Socket();
socket.connect (6000, "xxx.xxx.xxx.xxx", function () {
console.log("connected");
});
socket.on('data', function(data) {
var buf = new Buffer(data, 'base64');
var calls = buf.toString();
console.log(calls); // if I include this, data outputs to console perfectly
//set up socket.io connection to client
var clientupdate = function clientupdate() {
io.sockets.on('connection', function(socket) {
socket.emit('calls', {data: calls});
});
}
});
您没有调用clientupdate函数。你申报但不打电话。 您所需要的只是:
clientupdate();
该代码有几个问题:
clientUpdate
函数,因此服务器根本不响应新客户端io
对象上发出消息,这将向所有连接的客户端发送消息注意,由于从未使用单独的连接,我省略了整个
io.on('connection')
部分。只有当您需要与单个客户端交互时才需要它。客户端代码在哪里?我不关心客户端,因为我可以通过socket.io毫无问题地连接。问题是从服务器提取的数据(“调用”)没有传递到socket.io“socket.emit('calls',{data:calls});”以推送到客户端。不知道我错过了什么。var socket=io.connect(');on('calls',function(data){setStatus('connected');console.log(data);});socket.on('重新连接',函数(数据){setStatus('重新连接';});}好吧,在我有限的javascript经验中,这是有意义的。应该调用它来代替“console.log(data)”吗?我认为我的部分问题(除其他问题外)是围绕着整个异步问题。
//set all variables and modules includes here
// [...]
server = http.createServer (function(req, res) {
res.writeHead(200, {'Content-Type:' 'text/html'});
res.end(index);
}).listen(8080, localhost);
//connection to stats server
var socket = new net.Socket();
socket.connect (6000, "xxx.xxx.xxx.xxx", function () {
console.log("connected");
});
socket.on('data', function(data) {
var buf = new Buffer(data, 'base64');
var calls = buf.toString();
console.log(calls);
//any data we have we emit to all the clients
io.emit('calls', { data : calls });
});