【发布时间】:2017-03-16 23:46:20
【问题描述】:
我有一个使用 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 连接,只是为了确保它不是代理/连接问题。这很好用。
【问题讨论】:
-
你能创建到其他服务器的连接吗?也可以尝试不使用安全连接,以确保您可以连接到某个地方。
-
@Janne 我尝试连接到我知道可以工作的两个不同的套接字服务器,但仍然没有通过相同的错误。
-
@Janne 据我所知,Trigger 不再使用 Android 原生 webview。它使用 Chrome 网络视图。当我运行一个用户代理检查这就是我得到的 -
Mozilla/5.0 (Linux; Android 7.0; ONEPLUS A3003 Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36
标签: javascript socket.io trigger.io