2017-01-29 7 views
0

내 socketio 서버에 연결할 수는 있지만 어떻게 params와 함께 requst를 보낼 수 있습니까? 클라이언트 측에서websocket-sharp socketio 서버로 작업하고 "emit"요청을 보내는 방법

내 socketio 서버들을 이벤트

socket.on('init', (data) => { 
    console.log('init', data); 
}); 

는 난, 그래서 난 서버에 [ "초기화"를 JSON을 보내 { "유형"이

_socket.OnMessage += (sender, e) => 
{ 
    Console.WriteLine("message: {0} {1}", e.IsBinary, e.Data); 
    _socket.Send(MakePacket("init", new Init 
     { 
      key = "1", 
      room = "eq", 
      type = "s" 
     }.ToJson()) 
    ); 
}; 

private string MakePacket(string e, string data) 
{ 
    return new[] {e, data}.ToJson(); 
} 

을 할 tryed " "키": "1", "방": "eq"}]

그러나 서버는이 패킷에서 반응하지 않습니다. 서버가 잘 작동, 나는 C# 에서이 이벤트를 호출하는 문제가 있습니다. 내가 뭘 잘못 했니?

답변

1

서버 측에 원시 WebSocket을 가진

  • 일을 존재하는 경우 나도 몰라하지만 나는 내가 대답을 찾을 수없고 어떤 지원도 전혀하지 못하는 문제가있다. 그래서 나는 websocket-sharp로 전환했다.

    socketio 서버에서 디버그 정보의 일부 reseach 내가 대답을 찾았습니다. 내가이 문자열을 보내는 경우 모든

    42["init", {"type":"s","key":"1","room":"eq"}] 
    

    그냥 JSON 전에 (42)를 추가 잘 작동하고 모두가 잘 작동합니다. 마법. 이 42 숫자는 현재 연결 상태 또는 이와 비슷한 것 같습니다. 왜냐하면 socketio 서버에 연결하면 json 앞에 0으로 문자열이 전송되기 때문입니다.

  • 2

    문제는 socket.io은 일반 websocket이 아니라 websocket (또는 폴백으로 폴백을 초기화하고 초기화 할 때)의 맨 위에있는 사용자 지정 프로토콜입니다. 즉, socket.io 서버와 통신하려면 socket.io처럼 데이터와 메시지를 인코딩해야합니다. Here은 작동 방식에 대한 문서입니다.

    대안 :

    • 클라이언트 측에 socket.io 라이브러리를 사용 -하지만 하나는 C 번호는 socketio 라이브러리를 가지고