Java/Android的websocket不能连接到Spark的websocket服务,但是JavaScript可以



我想连接到一个开放的Spark websocket服务器。对于我来说,这个服务器位于ws://192.168.56.1:4567/chat/。当我尝试使用在计算机上运行的JavaScript连接到它时,它工作:

var websocket = new WebSocket("ws://192.168.56.1:4567/chat/");

这段代码成功连接到websocket。在Android上使用java-websocket,这段代码看起来像这样:

val client = Client(URI("ws://192.168.56.1:4567/chat/"))

我使用Kotlin,等效的Java代码是

Client client = new Client(new URI("ws://192.168.56.1:4567/chat/"));

其中Client是扩展WebSocketClient的类。当我尝试连接到websocket时,它根本不起作用并且超时,就好像这个websocket根本不存在一样。我确实在我的manifest文件中启用了INTERNET:

<uses-permission android:name="android.permission.INTERNET" />
<application
[...]

,我试着ping谷歌,这工作,所以我真的不知道是什么原因。谢谢你的帮助!

由于某些原因,你必须像这样使用Draft_17:

val client = Client(URI("ws://192.168.56.1:4567/chat/"), Draft_17())

最新更新