2012-01-14 18 views
3

私はチタンフレームワークでSocket.ioをhttps://github.com/nowelium/socket.io-titanium経由で使用しています。これまでのところ、「ポート」はXHRポーリング転送のみをサポートしています。以前は、Socket.ioでWebsocketトランスポートを使用して成功しました。XHR-Polling、Socket.io、およびTitaniumとの頻繁な切断

私が今持っている問題は、一度に数秒間ソケット接続が10秒ごとに「ドロップ」するように見えるということです。これは、チャットメッセージがドロップされたことを意味します。これはXHRポーリングで予期される動作ですか?キューシステムを実装する必要がありますか?またはこの問題を解決するための何らかの方法がありますか?

debug - setting poll timeoutdebug - discarding transport 
    debug - cleared close timeout for client 407473253144647189 
    debug - clearing poll timeout 
    info - transport end 
    debug - set close timeout for client 407473253144647189 
    debug - cleared close timeout for client 407473253144647189 
    debug - discarding transport 
    debug - client authorized 
    info - handshake authorized 4149191422068834219 
    debug - setting request GET /socket.io/1/xhr-polling/4149191422068834219?t=Thu%20Jan%2012%202012%2022%3A37%3A47%20GMT-0800%20%28PST%29 
    debug - setting poll timeout 
    debug - client authorized for 
    debug - clearing poll timeout 
    debug - xhr-polling writing 1:: 
    debug - set close timeout for client 4149191422068834219 
Connection 
    debug - setting request GET /socket.io/1/xhr-polling/4149191422068834219?t=Thu%20Jan%2012%202012%2022%3A37%3A47%20GMT-0800%20%28PST%29 
    debug - setting poll timeout 
    debug - discarding transport 
    debug - cleared close timeout for client 4149191422068834219 
Last login: Fri Jan 13 00:04:14 on ttys003 
+0

これを実行しているプラ​​ットフォームは何ですか? –

答えて

1

なぜ、Webビューでsocket.io.jsを読み込み、Ti.App.fireEvent/addEventListener経由でイベントをポンピングしないのですか? WebSocketにはポーリングの制限がありません。

<html> 
<head> 
    <script src="http://63.10.10.123:1337/socket.io/socket.io.js"></script> 
    <script> 
     var socket = io.connect('http://63.10.10.123:1337'); 
     socket.on('onSomething', function (data) { 
      Ti.App.fireEvent('onSomething', data); 
     }); 
     Ti.App.addEventListener('emitSomething', function (data) { 
      socket.emit('emitSomething', data); 
     }); 
    </script> 
</head> 
<body> 
</body> 
</html> 

編集:私はこのプロジェクトにこれをしなかったことに注意したい、それはiOSの上で非常に一貫して自分のアプリケーションをクラッシュしていました。私は周りを見回し、他の開発者もTitaniumを使わなくてもこれを打っていました。私はこのアプローチをとることを推奨しません。少なくとも、非常に徹底的にテストしてください(特に、バックグラウンドとアプリの再開)。その代わりに、私は自分のライトプロトコルでAppceleratorのTCPソケットを使用して、クライアントからサーバーへとサーバーからクライアントへデータをストリームします。

関連する問題