2017-12-29 34 views
0

나는 웹 소켓을 통해 게시/가입 메커니즘을 구축하고 있습니다. websocket 작동하지만 userA, userC, userD (pub/sub에 가입 한 다른 사용자)에게 메시지를 보내려면 어떻게해야합니까?websocket을 통해 보낸 사람이 아닌 다른 사용자에게 메시지를 보내야합니다.

websocketsharp를 사용하고 있으며 열려있는 세션 목록이 있으므로 SendTo를 사용하려고했으나 제대로 작동하지 않습니다.

올바른 방향으로 포인트가 필요합니다.

그런데 userA에서 서버로, 서버에서 userA로 쉽게 보낼 수는 있지만 가입 한 userB, userC, userD에게 전달하는 방법을 알아낼 수 없습니다. sessionQueue 모든 세션을 할당

class DDPServer : WebSocketBehavior, IClientSession 
    { 
     private SessionInfo sessionInfo; 
     public static WebSocketSessionManager sessionQueue { get; set; } 
     // more stuff here 
    } 

:

여기에 내가 시도하고있는 무슨의 작은 코드 조각입니다.

이제 모든 세션이 완료되었습니다. 요청이 소켓 서버에 의해 수신 (가입 한 사용자의 목록을 제공합니다) 술집/서브 메커니즘을 통해 전달, 지금은 같은 것을 사용하여 데이터를 다시 전송을 시도 :

DDPServer.sessionQueue.SendTo("test", "3d0f491cfb654dd4839337608b19f849"); 

곳 3d0f491cfb654dd4839337608b19f849 세션 ID입니다.

+0

서버로 보내면 서버는이를 클라이언트에 다시 보냅니다. – Gusman

+0

서버로 보내면 괜찮습니다. 보내는 클라이언트에게 다시 보낼 수는 있지만 구독 한 다른 클라이언트로 전달하는 방법은 무엇입니까? – stevelacerda7

+0

설명을위한 몇 가지 코드를 보여줄 수 있습니까? 서버에서 보내거나받을 수있는 경우 문제가 무엇인지 이해하고 있는지 잘 모르겠습니다. – Mark

답변

0

WebSocketSessionManager는 열린 연결을 유지하므로 .SendTo ("string data here", "string session id here")와 함께 사용하면 다른 클라이언트로 보낼 수있었습니다.

그래서 사용자를 구독하고 데이터베이스에 가입 한 사용자 목록으로 채널을 저장하고 해당 사용자를 끌어내어 해당 사용자와 연결된 세션을 찾은 다음 for 루프를 실행합니다. 각 세션을 보냅니다.