我通过https://github.com/nowelium/socket.io-titanium在Titanium框架上使用Socket.io。到目前为止,该“端口”仅支持XHR轮询传输。过去,我使用Websocket传输在Socket.io上取得了成功。
我现在遇到的问题是我的套接字连接似乎每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来泵送事件?这为您提供了WebSockets,它没有轮询的限制。
<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套接字和我自己的光协议来将数据从客户端传输到服务器,从服务器传输到客户端。