2016-07-18 12 views
-1

자바 스크립트 실시간 앱을 만드는 작업이 있습니다. 서버 쪽 준비 (wss : //), 나는 클라이언트 쪽을 만들어야 해. 당신의 연결을 확인하기 위해 서버를 Ping 할 수데이터로 자바 스크립트 연결 요청

클라이언트 :

주요 작업은 내가 문제가있다. 클라이언트는 시퀀스 번호 (정확한 핑 기간을 추적 할 수 있음)를 포함하여 핑을 수행합니다.

{ 
    "$type": "pong", 
    "seq": 1 
} 

클라이언트 요청

{ 
    "$type": "subscribe_tables" 
} 

서버가 테이블 목록에 응답하고, table_added으로 클라이언트를 업데이트 table_removed 메시지를 table_updated :

{ 
    "$type": "ping", 
    "seq": 1 
} 

서버가 응답 할 것입니다 상태가 변경 될 때마다.

{ 
    "$type": "table_list", 
    "tables": [ 
    { 
     "id": 1, 
     "name": "table 1", 
     "description" : "one, two" 
    }, { 
     "id": 2, 
     "name": "table 2" 
     "description" : "two, three" 
    } 
    ] 
} 

table_updated 이벤트

{ 
    "$type": "update_table", 
    "table": { 
    "id": 3, 
    "name": "table - Foo Fighters", 
    "participants": 4 
    } 
} 

질문 : 내가 아는, 내가 new EventSource()을 사용할 수 있습니다,이 맞습니까? 어떻게 데이터를 $type으로 보낼 수 있습니까?

+0

클라이언트가 어떻게 연결하고 데이터를 가져올 지 아직 알지 못하는 경우 "서버가 준비되었습니다"라고 말하는 것이 이상합니다. http 요청, webSocket 또는 서버 측 이벤트와 같이 클라이언트에서 데이터를 가져 오는 방법을 어떻게 계획합니까? – jfriend00

+0

wss : // – MurDaD

+0

을 통해 서버에 연결할 수 있습니다. webSocket이 당신의 계획이면, 왜 새 EventSource()를 사용하는지 이야기하고있는 것입니다. 지금 당장 당신의 전체적인 질문은 사실이 아닙니다.우리는 당신이 실제로 도움을 청하는지 말할 수 없습니다. webSocket에 연결하는 경우 webSocket을 통해 서버의 데이터를 보내고 클라이언트의 webSocket에서 해당 데이터를 읽습니다. – jfriend00

답변

0

저는 새로운 EventSource()를 사용할 수 있음을 알고 있습니다. 맞습니까? 어떻게하면 $ type 데이터를 보낼 수 있습니까?

아니요, 정확하지 않습니다. 서버가 webSocket 연결을 원하면 클라이언트의 new WebSocket(...)을 사용하여 클라이언트에서 서버로 연결하십시오. 그리고 EventSource() 객체는 webSocket과 완전히 다른 전송 인 서버 측 이벤트에 사용됩니다.

webSocket을 사용하여 프로그래밍 예제 here on MDN을 볼 수 있습니다.

또한 데이터로 자바 객체를 보내려는 경우 일반적으로 JSON.stringify()을 사용하여 문자열로 직렬화 한 다음 전송 한 다음 수신 측에서 JSON.parse()을 사용하여 JSON 문자열을 다시 구문 분석합니다. Javascript 객체. 이것이 동일한 메시지의 다른 데이터와 함께 $type 같은 정보를 보내는 방법입니다.

FYI socket.io은 webSocket 위에 구축 된 라이브러리로, JSON 직렬화, 자동 재 연결, 자동 연결 유지, 연결 등과 같이 일반적으로 webSocket 프로그래밍에 필요한 많은 것들이 자동으로 수행되기 때문에 매우 인기가 있습니다 드롭 검출 등 ... 당신은 확실히 클라이언트와 서버에서 그것을 사용할 필요는 없지만 종종 많은 시간을 절약합니다.