ExpressServerでNodeJSを使用して基本的なSocket.ioを実装しました。 (基本的には、Socket.ioのWebサイトにあるGetting Startedの例)携帯電話のsocket.io - デバイスのスリープを解除しないでください。ブラウザを閉じてタブを変更してください。
期待どおりにデスクトップに接続/切断されます。ページを参照すると、ソケットが接続されます。接続イベントは、クライアント側とサーバー側の両方で発生します。ユーザーがブラウザを閉じると、ソケットが切断されます。
モバイルでは、切断が期待どおりに機能しません。ページを参照すると、ソケットが接続し、イベントが発生します。ユーザー
- は別のアプリ
- にブラウザアプリ(SafariやAndroidのブラウザ)(ホームボタンを押す)
- スイッチを閉じた場合でも、socket.ioは切断されません
- 新しいタブを開きますデバイスをスリープ状態にします(スリープボタンを押して)
また、切断イベントはサーバーやクライアントで発生しません。
JavaScriptを使用してwindow.pagehideを使ってイベントを検出しようとしましたが、正しく起動していません。
ユーザーが携帯電話のページから離れたときにSocket.ioの接続を解除する方法を知っている人はいませんか。
ご迷惑をおかけして申し訳ございません。 Doruk
window.onblurとwindow.onpagehideの2つのイベントがあります。しかし、Androidではうまく実装されていません。また、Socket.ioにはbult-inハートビートメカニズムがあり、接続が開いている間は50msごとにソケット接続を介してデータを送信します。だから私は、クライアントがアイドルであるかどうかを検出するために接続を使用することはできません。私はもっと研究:) –