我的Socket.IO(Node.JS)有问题。 我尝试向发出请求的客户端发出一些内容,但Socket.IO会回复最新连接的客户端。 例如:我将计算机连接到网站,然后连接我的笔记本电脑。现在我用我的电脑提出请求,但我的笔记本电脑正在得到答案。 我的代码如下所示:
服务器:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server, { log: false });
var socket = socket;
io.sockets.on('connection', function (socket_) {
socket = socket_;
socket.on('dl_me', function (result) {
downloadTrack(result, result.song_uri);
if (typeof callback == 'function' ) {
callback({
success: success
});
}
});
});
var downloadTrack = function(result, uri) {
socket.emit('gotodownload', {
id: generated_number
});
}
客户端:
var socket = io.connect( window.location.href );
socket.on('gotodownload', function(result) {
var linktodl = window.location.host + '/getme/' + result.id;
document.getElementById('dlbutton').innerHTML = '<a href="http://' + linktodl + '">Download!</a>'
});
这不是完整的代码,而是每个相关的socket.io部分。
答案 0 :(得分:0)
尝试将套接字对象传递给downloadTrack
函数:
// Add an argument for the socket object.
var downloadTrack = function(socket, result, uri) {
socket.emit('gotodownload', {
id: generated_number
});
}
修改dl_me
事件中的代码以调用函数:
socket.on('dl_me', function (result) {
// Pass the socket to the function.
downloadTrack(socket, result, result.song_uri);
// ...
});