나는 Opa를 사용하여 온라인 다중 플레이어 게임을 만들고 있으며 클라이언트 연결을 조작하는 방법에 대해 몇 가지 질문이 있습니다. 연결 끊기 기능은 효과가 약 2 분 정도 소요클라이언트 연결을 조작하는 방법
function game_view(){
function page_ready(){
// observe game messages
_ = Network.observe(game_msg_received,game_channel);
// set disconnect function
_ = ClientEvent.set_on_disconnect_client(function(c){
//do something when client is disconnected
...
});
}
<div onready={function(_){ page_ready() }}>
//page content
...
</div>
}
(I은 (는) 4 핑 실패의 시간 추측) 내 탭이나 창을 닫은 후, 너무 길어 : 여기
내 코드 추출물이다 내 경우에는 어떻게 조정할 수 있습니까?
[SESSION] catch되지 않은 예외 : "{OpaRPC_Server : {나는이 페이지를 떠날 때
일부 오류 메시지는 다음과 같이 나타납니다 잠시 후, (탭을 닫거나 다른 페이지로 이동) 다음과 같은 메시지는 건너 뜁니다. : 원한다면 (msg, st, ctx) {time : {클라이언트 : {클라이언트 : $ "46rrpwmeiq28ql0d8lgz7e35zt8d701c"; 페이지 : $ 934885115 $}; fun_id : $ "__ set_game_Mygame" 디버그 인쇄 설정 디버그 변수 session_debug> = 200
페이지가 더 이상 존재하지 않기 때문에 재미라고 생각합니다. ction 'game_msg_received'는 게임 메시지를 받았을 때이 페이지를 알리려고 시도합니다. 그러면이 오류를 어떻게 피할 수 있습니까?
감사처럼 보일 것이다, 그것은 유용합니다. 하지만 나는 내 행동에 대해 비합법적이라고 생각하지 않는다. 오랜 시간 동안 아무런 행동을 취하지 않고 게임을 계속할 수는있다. 예를 들어, 자신의 차례가 아니어도된다. 이것은 [Opa Poker] (http://poker.mlstate.com)와 유사합니다. 오빠 포커가 어떻게 해결하는지 모르겠습니다. 페이지가 준비되면 주기적으로 하트 비트를 보내려고합니다. 비용이 너무 많이 들까 요? – winbomb
예, 세션을 사용하여 하트 비트를 구현하면 하트 비트로 한 메시지 비용이 발생합니다. –
나는 당신이 원하는 것을 구현하는 더 좋은 방법이라고 생각한다. 그것은 하나의 서버 세션이고, 단지 세션에 void 메시지를 보내는 클라이언트 타이머이다. 하지만 {unload} Dom.event를 사용하여 서버 연결 해제 함수를 호출 할 수도 있습니다. 클라이언트가 브라우저를 제대로 종료하면 트리거되어야합니다 (충돌, 강제 종료 등). –