我在套接字服务器和客户端socket.id时遇到问题。使用node@5.6.0
和socket@1.4.6
我与客户端(socket.id
)和服务器(socket.io-client
)的不同socket
不确定是否在最新版本中出现这种情况? ei的不同之处在于服务器端socket.id
有/#IAPEFvUDQkfV0NxcAAAA
而客户端socket.id
有IAPEFvUDQkfV0NxcAAAA
,就好像我使用socket@1.3.1
我得到了相同的套接字。来自客户端和服务器的id。
这是版本......
admin$ npm list | grep socket
├─┬ socket.io@1.4.6
│ ├─┬ socket.io-adapter@0.4.0
│ │ └─┬ socket.io-parser@2.2.2
│ ├─┬ socket.io-client@1.4.6
│ └─┬ socket.io-parser@2.2.6
├─┬ socket.io-client@1.3.1
│ ├─┬ socket.io-parser@2.2.2
├─┬ socket.io-stream@0.6.1
admin$ npm --version
3.6.0
admin$ node --version
v5.6.0
admin$
这是服务器test_socket_server
代码
# test_socket_server.js
var io = require('socket.io').listen(5000);
var serverurl = "http://0.0.0.0:5000/";
io.sockets.on('connection', function (socket) {
var socketid = socket.id
console.log('serversocketid', socketid)
socket.on('get_socketid_from_client', function(clientsocketid) {
console.log('get_socketid_from_client-clientsocketid', clientsocketid)
io.to(clientsocketid).emit('test_emit_on_clientsocketid')
io.to('/#'+clientsocketid).emit('test_emit_on_clientsocketid_modified')
socket.emit('test_emit_on_serversocketid')
})
});
这是客户test_socket_client
代码
# test_socket_client.js
var io_client = require('socket.io/node_modules/socket.io-client')
var serverurl = "http://0.0.0.0:5000/";
var options = {
transports: ['websocket'],
'force new connection': true
};
var socket = io_client.connect(serverurl, options);
socket.on("connect", function () {
console.log('clientsocketid', socket.id);
socket.emit('get_socketid_from_client', socket.id, function(data) {
console.log('get_socketid_from_client', data)
});
});
socket.on("test_emit_on_clientsocketid", function () {
console.log('test_emit_on_clientsocketid successful')
});
socket.on("test_emit_on_clientsocketid_modified", function () {
console.log('test_emit_on_clientsocketid_modified successful')
});
socket.on("test_emit_on_serversocketid", function () {
console.log('test_emit_on_serversocketid successful')
});
这是结果......
# Server side
$ node test_socket_server.js
serversocketid /#IAPEFvUDQkfV0NxcAAAA
get_socketid_from_client-clientsocketid IAPEFvUDQkfV0NxcAAAA
$
# Client side
$ node test_socket_client.js
clientsocketid IAPEFvUDQkfV0NxcAAAA
test_emit_on_clientsocketid_modified successful
test_emit_on_serversocketid successful
$
答案 0 :(得分:1)
我知道我迟到了,但似乎在几天前发布的最后一个版本中修复了这个问题。
release notes of version 1.5.0中的第一项表示在没有名称空间
时,它们会在id之前停止附加/#