【发布时间】:2013-12-31 19:21:46
【问题描述】:
我正在使用 Titanium SDK 3.1.3 并尝试使用连接到节点 js 服务器的聊天构建应用程序。 到目前为止,我已经尝试了两个不同的模块来做到这一点,但它们都没有任何运气。 我尝试的第一个模块是socket.io-titanijm,我的代码如下所示:
var io = require('socket.io-titanium');
var socket = io.connect('IP:PORT', {'force new connection':true});
socket.on('connect', function()
{
// Connected, let's sign-up for to receive messages for this room
Ti.API.info('connected to socket');
socket.emit('room', conversationId.toString());
});
socket.on('messageReceived', function(data)
{
Ti.API.info('message received');
try {
addMessageFromNode(data);
} catch(e) {
alert(e);
}
});
但我得到了错误:
E/TitaniumModule(19374): Invalid value, expected type Number.
E/V8Exception(19374): Exception occurred at ti:/bootstrap.js:131: Uncaught Error: Invalid value, expected type Number.
E/XMLModule(19374): (KrollRuntimeThread) [1450,1450] Error parsing XML
E/XMLModule(19374): org.xml.sax.SAXParseException: Unexpected token (position:TEXT faa_rzQcGIc9Vzvt...@1:72 in java.io.InputStreamReader@411485a8)
E/XMLModule(19374): at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:146)
E/XMLModule(19374): at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107)
E/XMLModule(19374): at ti.modules.titanium.xml.XMLModule.parse(XMLModule.java:82)
E/XMLModule(19374): at ti.modules.titanium.xml.XMLModule.parse(XMLModule.java:68)
E/XMLModule(19374): at ti.modules.titanium.network.TiHTTPClient.getResponseXML(TiHTTPClient.java:655)
E/XMLModule(19374): at ti.modules.titanium.network.HTTPClientProxy.getResponseXML(HTTPClientProxy.java:93)
E/XMLModule(19374): at org.appcelerator.kroll.runtime.v8.V8Object.nativeCallProperty(Native Method)
E/XMLModule(19374): at org.appcelerator.kroll.runtime.v8.V8Object.callProperty(V8Object.java:69)
E/XMLModule(19374): at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1098)
E/XMLModule(19374): at android.os.Handler.dispatchMessage(Handler.java:95)
E/XMLModule(19374): at android.os.Looper.loop(Looper.java:137)
E/XMLModule(19374): at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)
E/TiHttpClient(19374): (KrollRuntimeThread) [5,1455] Error parsing XML
E/TiHttpClient(19374): org.xml.sax.SAXParseException: Unexpected token (position:TEXT faa_rzQcGIc9Vzvt...@1:72 in java.io.InputStreamReader@411485a8)
E/TiHttpClient(19374): at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:146)
E/TiHttpClient(19374): at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107)
E/TiHttpClient(19374): at ti.modules.titanium.xml.XMLModule.parse(XMLModule.java:82)
E/TiHttpClient(19374): at ti.modules.titanium.xml.XMLModule.parse(XMLModule.java:68)
E/TiHttpClient(19374): at ti.modules.titanium.network.TiHTTPClient.getResponseXML(TiHTTPClient.java:655)
E/TiHttpClient(19374): at ti.modules.titanium.network.HTTPClientProxy.getResponseXML(HTTPClientProxy.java:93)
E/TiHttpClient(19374): at org.appcelerator.kroll.runtime.v8.V8Object.nativeCallProperty(Native Method)
E/TiHttpClient(19374): at org.appcelerator.kroll.runtime.v8.V8Object.callProperty(V8Object.java:69)
E/TiHttpClient(19374): at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1098)
E/TiHttpClient(19374): at android.os.Handler.dispatchMessage(Handler.java:95)
E/TiHttpClient(19374): at android.os.Looper.loop(Looper.java:137)
E/TiHttpClient(19374): at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)
我根本不知道这个 bootstrap.js 文件在哪里,我的项目中不存在这样的文件,所以我相信这是 Titanium SDK 中的一个文件? 我尝试使用的另一个模块是iamyellow's tiws module,为此我使用了以下代码:
var ws = require('net.iamyellow.tiws').createWS();
ws.addEventListener('open', function() {
Ti.API.info('websocket opened');
});
ws.addEventListener('close', function(ev) {
Ti.API.info('close');
Ti.API.info(ev);
});
ws.addEventListener('error', function(ev) {
Ti.API.info('error');
Ti.API.info(ev);
});
ws.addEventListener('message', function(ev) {
Ti.API.info('message');
Ti.API.info(ev);
});
ws.open('IP:PORT');
但是这个模块根本没有连接,没有错误信息被抛出,我在测试这个模块时彻底检查了logcat,没有发现任何东西。 这些模块不能与 Titanium SDK 3.x 一起使用吗?如果他们这样做了,那么发生了什么?两者都被标记为“易于实施”,但两者的文档都很糟糕,显示的行为也很混乱。
【问题讨论】:
标签: android websocket socket.io titanium titanium-modules