socket.io客户端和服务器socket.id不同

时间:2016-06-01 18:59:27

标签: node.js sockets

我在套接字服务器和客户端socket.id时遇到问题。使用node@5.6.0socket@1.4.6我与客户端(socket.id)和服务器(socket.io-client)的不同socket不确定是否在最新版本中出现这种情况? ei的不同之处在于服务器端socket.id/#IAPEFvUDQkfV0NxcAAAA而客户端socket.idIAPEFvUDQkfV0NxcAAAA,就好像我使用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

$

1 个答案:

答案 0 :(得分:1)

我知道我迟到了,但似乎在几天前发布的最后一个版本中修复了这个问题。

release notes of version 1.5.0中的第一项表示在没有名称空间

时,它们会在id之前停止附加/#