소켓 서버와 클라이언트 socket.id에 문제가 있습니다. [email protected]
및 [email protected]
으로 클라이언트 (socket.io-client
)와 socket.id
이 달라지고 서버 (socket
)가 최신 버전인지 잘 모르겠습니까? e.i 차이점은 서버 측 socket.id
은 /#IAPEFvUDQkfV0NxcAAAA
이고 클라이언트 측 socket.id
은 IAPEFvUDQkfV0NxcAAAA
입니다. [email protected]
을 사용하는 경우 클라이언트와 서버에서 동일한 socket.id를 얻습니다.socket.io 클라이언트와 서버 socket.id가 다릅니다
이 버전입니다 ...
admin$ npm list | grep socket
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ ├─┬ [email protected]
│ └─┬ [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
├─┬ [email protected]
admin$ npm --version
3.6.0
admin$ node --version
v5.6.0
admin$
이이 클라이언트 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')
});
이러한 결과입니다입니다 서버 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')
})
});
입니다 .. .
# 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
$
없는이 링크는 질문에 대답 할 수 있지만, 여기에 해답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공하는 것이 더 좋습니다 . 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [검토 중] (리뷰/저품절 게시물/13952124) –
완료. 감사합니다. –