无法连接到Android中的Node JS服务器

乌里尔·阿维祖

我正在使用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的tiws模块,为此我使用了以下代码:

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的超时问题。如果未定义要分配给超时的变量,则它将无效。我的意思是,如果您有类似的事情;

this.timeoutTimer = setTimeout(...); //imagine the variable this is a reference to an object that is storing properties for a connection.

它不起作用,但是如果您在给timeoutTimer属性赋予空值之前为其分配超时ID,则如下所示:

this.timeoutTimer = null;
.
. doing something else
.
this.timeoutTimer = setTimeout(...);

它将没有问题。

请注意这一点,这仅是一个Android问题,但如果您要跨平台安装,则iOS不会存在此问题,请确保将任何存储超时ID的变量初始化为NULL。

现在要解决我的问题,您必须使用socket.io-titanium模块,但我无法使tiws模块正常工作。因此,以下是使用socket.io-titanium解决此问题的步骤:

  1. 转到文件夹中的socket.io文件夹,然后打开lib文件夹,这里将有几个javascript文件。
  2. 打开socket.js文件。
  3. 搜索线 Socket.prototype.handshake = function (fn)
  4. 将行添加到前一行的this.heartbeatTimeoutTimer = null;正下方。
  5. 保存并编译为Android。

现在,这应该使连接正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法连接到Android中的Node JS服务器

来自分类Dev

无法连接到Node.js服务器

来自分类Dev

无法从Node.js连接到Telnet服务器

来自分类Dev

Node 服务器的 Systemd 服务无法连接到 MongoDB

来自分类Dev

从网站连接到Node.js服务器?

来自分类Dev

如何连接到远程Node.js服务器?

来自分类Dev

PHP websocket连接到node.js服务器

来自分类Dev

Paho JS无法连接到Mosquitto服务器

来自分类Dev

NodeJS Express JS - MongoError:无法连接到服务器

来自分类Dev

Wndows 10 / Node.js无法连接到MySQL服务器

来自分类Dev

Flutter套接字IO无法连接到Node JS套接字IO服务器

来自分类Dev

无法使用公共IP连接到Node JS服务器

来自分类Dev

Android App使用Socket.io连接到Node.js服务器

来自分类Dev

MongoError:无法连接到 Node-RED 中的服务器

来自分类Dev

Android应用无法连接到服务器

来自分类Dev

Android App无法连接到本地服务器

来自分类Dev

少于api 23的Android无法连接到服务器

来自分类Dev

无法在Android Smartphone上连接到FTP服务器

来自分类Dev

[React Native] [Android]无法连接到开发服务器

来自分类Dev

Android studio - 无法连接到 LDAP 服务器

来自分类Dev

客户端无法连接到Azure应用服务上托管的Node.js Websocket服务器吗?

来自分类Dev

ssh无法连接到VPN中的服务器

来自分类Dev

无法在 Nautilus 中“连接到服务器”

来自分类Dev

无法连接到在 WSL 中运行的 ssh 服务器

来自分类Dev

无法连接到 intellij 中的 Wildfly 服务器

来自分类Dev

无法连接到PostgreSQL服务器

来自分类Dev

无法连接到python服务器

来自分类Dev

Qt无法连接到服务器

来自分类Dev

NullPointerError:无法连接到服务器

Related 相关文章

热门标签

归档