2014-09-03 3 views
0

안녕하세요 저는 현재 일종의 "채팅"시스템에서 일하고 있습니다.socket.io 특정 클라이언트에 방출 후 연결 끊기 NODE javascript

서버 : 명시 적으로 NodeJs - HTTPS 통신 : [email protected]

클라이언트 :

io.sockets.on('connection', function(socket){ 
    socket.on('HELLO', function(data){ 
     socket.user = data.user; 
     socket.emit('WELCOME', socket.user); 
    }); 
    socket.on('REGISTER', function(data){ 
     console.log('room: '+socket.user); 
     socket.join(socket.user); 
     socket.emit('SIGNED', socket.user); 
     console.log('SIGNED IN: '+socket.user); 

    }); 
    socket.on('GO', function(data){ 
     //some logic happens where a list of users gets loaded 
     //which is identical to the socket.user and its room 
     //... loop 
     io.in(partners[i].user).emit('message', { somedata: 'asd' }); 
    } 

    socket.on('disconnect' ..... blaaa blaa) 

그래서, basicly 내가 여기서 뭘하려고 무엇을 : 서버

var socket = io.connect(); 
socket.emit('HELLO', {user:'someuserid'}); 
socket.on('WELCOME', function(data){ 
    socket.emit('REGISTER', {}); 
}); 
socket.on('SIGNED', function(data){ 
    console.log(data.user); 
    socket.emit('GO', {}); 
}); 
socket.on('message', function(data){ 
    console.log(data.somedata); 
}); 

특정 방으로 메시지를 보내 특정 사용자에게 메시지를 보내는 문제를 해결하는 방법입니다.

이 :

io.in(partners[i].user).emit('message', { somedata: 'asd' }); 

이 : 동일한에서

partners[i].socket.emit('message', { somedata: 'asd' }); 

결과 :

room: 540246a3e4b0a64a28e1ec59 
SIGNED IN: 540246a3e4b0a64a28e1ec59 
room: 540504ba0b526b274398480e 
SIGNED IN: 540504ba0b526b274398480e 
to: 540246a3e4b0a64a28e1ec59 
disconnected:540246a3e4b0a64a28e1ec59 

사용자 레지스터, 접속 특정 chatpartners에 메시지를 방출 원 도착 배열 파트너 [i]에서. 개의 발광가 사용자를 발사되면

이 메시지는 내가 무슨 일을하고있는 중이 야

... 단절로 배출하도록되어?

당신의 도움에 대한

감사합니다 (스크립트 내가 가장 중요한 부분을 붙여 .. 분명 완전하지 않습니다).

답변

1

가 나는 해결책을 찾을 수 있다고 생각 :

가끔 사용하는 구글이 스스로 디버깅보다 더 많은 노력입니다.

파이어 폭스의 디버그 로그를 스크롤 한 후이 문제는 실제로 내 소켓 '메시지'처리기 내부의 코드와 관련이 있다는 것을 알게되었습니다. 다른 사람들이 자신의 소켓 오류를 찾는 데 도움이 될 수있는 미리보기 :

socket.on('error', function (err) { 
    if (err.description) throw err.description; 
    else throw err; // Or whatever you want to do 
}); 

나는 내 잘못된 코드 있었지만이 socket.io 에 문제라고 생각 - socket.io의 ErrorHandler를 관통 것을 통과해야한다.

재밌게 보내주세요.