Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在混合应用程序中创建websocket连接时出错_Javascript_Socket.io_Trigger.io - Fatal编程技术网

Javascript 在混合应用程序中创建websocket连接时出错

Javascript 在混合应用程序中创建websocket连接时出错,javascript,socket.io,trigger.io,Javascript,Socket.io,Trigger.io,我有一个应用程序,它使用socket.io(1.4.5)建立websocket连接。该应用程序可以通过web URL访问,也可以使用Trigger.io作为打包的Android应用程序使用 Android应用程序无法连接到我的websocket服务器。这是我收到的错误 WebSocket connection to 'wss://myserver.com/socket.io/?user_id=xxx&session_token=xxx&EIO=3&transport=we

我有一个应用程序,它使用socket.io(1.4.5)建立websocket连接。该应用程序可以通过web URL访问,也可以使用Trigger.io作为打包的Android应用程序使用

Android应用程序无法连接到我的websocket服务器。这是我收到的错误

WebSocket connection to 'wss://myserver.com/socket.io/?user_id=xxx&session_token=xxx&EIO=3&transport=websocket' failed: Unspecified reason
它在socket.io客户端中引用的行位于
doOpen()方法中

this.ws = BrowserWebSocket ? new WebSocket(uri) : new WebSocket(uri, protocols, opts);
据我所知,我还没有对websocket服务器做任何更改。网站本身运行良好,能够连接到websocket服务器

我已经使用Chrome Devtools检查了Trigger.io Android应用程序,当我手动尝试连接到我的websocket服务器时,我得到了相同的错误。以下代码行不起作用

new WebSocket("wss://myserver.com/socket.io/?user_id=xxx&session_token=xxx&EIO=3&transport=websocket")
在Chrome浏览器中运行同一行代码就可以了

此外,错误响应似乎太快。看起来混合应用程序中的webview甚至没有尝试连接。无论websocket服务器是否正在运行,响应都是相同的。输入一个无意义的URL也会出现同样的错误

new WebSocket("wss://blahblah"); //gives the same error and response immediately
Trigger应用程序中的Chrome版本为55.0.2883.91


编辑:我在运行应用程序的设备的移动浏览器上测试了websocket连接,只是为了确保它不是代理/连接问题。这很有效

解决方案是在触发器中使用httpd模块

设置httpd服务器使应用程序可以使用
http://localhost
URL,而不是内容:或文件:协议。有了这一点,任何阻止连接的Chrome CSP问题都将解除


模块文档:

您可以创建到其他服务器的连接吗?在没有安全连接的情况下也尝试一下,以确保您可以连接到某个地方。@Janne我尝试连接到两个我知道可以工作的不同套接字服务器,但仍然没有发生相同的错误。检查这篇文章@Janne,据我所知,触发器不再使用Android本机webview。它使用Chrome网络视图。当我运行useragent检查时,这就是我得到的-
Mozilla/5.0(Linux;Android 7.0;ONEPLUS A3003构建/NRD90M;wv)AppleWebKit/537.36(KHTML,比如Gecko)版本/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36