2014-10-12 2 views
0

socket.io를 사용하여 이벤트를 클라이언트로 보내고 서버로 보내지 않을 수 있습니까? 뭔가 같은 : 내가 부탁 해요 이유socket.io 클라이언트에서 이벤트를 로컬로 내보낼 수 있습니까?

socket.emitLocally('some event', data); 
다음

은 다음과 같습니다 순간

내 서버는 모든 소켓에 이벤트를 방출한다.

io.sockets.emit() 

이 방법이 효과적 일 수 있지만 사용자 상호 작용과 서버의 응답 사이에 지연이 발생할 수 있습니다.

이것이 내가 서버 측에서 브로드 캐스트를 사용하고 방송 클라이언트에서 직접 처리하는 것을 선호하는 이유입니다.

socket.broadcast.emit() 

클라이언트는 angular.js를 기반으로하며 모듈은 서로를 알지 못합니다. 클라이언트를 직접 업데이트하는 코드에 액세스 할 수 없습니다. 나는 관련 모듈에 주입 할 이벤트 발송 서비스를 사용해야 할 것이다.

기본적으로 what I am doing with socket.io right now이므로이 작업을 수행하기 위해 단순히 시스템을 사용할 수없는 것인지 궁금합니다.

의견이나 제안 보내 주셔서 감사합니다!

+0

그래서 클라이언트가 다른 사람에게 메시지를 보내지 않겠습니까? – jfriend00

+0

@ jfriend00 예. 실제로 메시지를 보내지 않고 (서버와 서버로). 메시지가 클라이언트로 전송 된 경우 전달되는 이벤트를 트리거하려고합니다. 이게 말이 돼? ;) – marcorei

+0

OK, 나는 당신의 욕구를 따라 할 것 같지만, socket.io에서 어떤 일을 할 수 있는지는 알지 못합니다. – jfriend00

답변

0

당신은 방금 내가 도움이 될 희망

callback(); 

를 호출 할 수

io.on("name",callback); 

사용하여 클라이언트 측에서 이벤트를 잡을 가정하면! =)

+0

예제가 너무 간단했습니다. 물론 당신은 청취자에게 전화 할 수있는 간단한 예를 들어 맞습니다. 내가이 질문을 한 이유는 socket.io를 중앙 이벤트 허브로 사용하고 있기 때문입니다. 따라서 응용 프로그램의 어떤 부분이 수신 한 이벤트를 청취 할 것인지 결코 확신 할 수 없습니다. 이벤트를 서버에 보낼 때 모든 리스너를 호출하면 꽤 복잡해질 수 있으며 경우에 따라서는 불가능할 수도 있습니다. 그래서, 불행히도, 이것은 내 문제를 해결하지 못합니다. – marcorei

+0

TBH,'io.on'을 사용하여 서버로부터 메시지를받는 시스템을 어떻게 가질 수 있는지는 모르지만 콜백이 무엇인지는 알 수 없습니다. 좀 더 자세히 설명해 주시겠습니까? –

+0

'io.emit'을 사용할 때 콜백이 무엇인지 알 수 없습니다. 그러나 모든 것이 잘되면 내 고객이받을 사건을 알고 있습니다. 예 : 각 응용 프로그램에는 3 개의 완전히 개별적인 모듈이 있습니다. 하나는 메시지가 추가 될 때마다 토스트 형 알림을 표시하는 모듈이고, 다른 하나는 화면 왼쪽에 읽지 않은 메시지가 포함 된 채팅룸을 나열하는 모듈이고 다른 하나는 선택한 채팅의 메시지를 화면 오른쪽에 표시 할 수 있습니다. (다음 댓글에서 계속) – marcorei

관련 문제