gpt4 book ai didi

android - 无法从 Android socket.io 2 客户端连接到 node.js socket.io 3.x 服务器

转载 作者:行者123 更新时间:2023-12-03 11:51:35 27 4
gpt4 key购买 nike

我正在尝试在 android/kotlin 上使用带有 Node js 套接字 io 服务器的 socket.io 客户端

主要 Activity :

import io.socket.emitter.Emitter
import io.socket.engineio.client.Socket


override fun onCreate(savedInstanceState: Bundle?) {
//...
val mSocket = Socket("http://192.168.1.15:3000")
mSocket.on(Socket.EVENT_ERROR, { print("error")})
mSocket.on(Socket.EVENT_OPEN, Emitter.Listener() {
mSocket.emit("mayaCommand", "cmds.polyCube()");
mSocket.close()
print("ok")
)}
mSocket.open()


Socketio 库:

 implementation 'io.socket:engine.io-client:2.0.0'.

在这个库的 github 页面上(here),版本 2.0.0 适用于 3.x 服务器,所以我的 nodejs socket.io 服务器在 3.0.3 上

"socket.io": "3.0.3",
"socket.io-client": "3.0.3"

日志中没有任何内容,只是不工作,我用 Wireshark 检查了网络数据包,我可以看到一些数据包。

我已经创建了一个 network_security_config.xml :

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">http://192.168.1.15</domain>
</domain-config>
</network-security-config>

我 list 中的链接:

 <application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:networkSecurityConfig="@xml/network_security_config"
android:usesCleartextTraffic="true"
>

而且不工作,什么也没有发生。

谢谢

最佳答案

好的,所以今天我重新创建了整个项目,一步一步地在我的另一个屏幕上运行 wireshark。

破坏:它正在工作。我将详细说明所有步骤,以防其他人遇到同样的问题。

在 gradle 模块文件中添加:

 implementation('io.socket:socket.io-client:2.0.0') {
exclude group: 'org.json', module: 'json'
}

(2.0.0 用于 socket.io 3.x 服务器)

编辑 list :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.socketdccs">
<uses-permission android:name="android.permission.INTERNET" /> <=== add perms
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true" <==== this is important
/...

还有我的 MainActivity:

package com.example.myapp
// ...
import io.socket.client.IO
import io.socket.client.Socket
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {



override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)


val mSocket = IO.socket("http://192.168.1.15:3000")
mSocket.on(Socket.EVENT_CONNECT, {println("connected")})
testBtn.setOnClickListener {

mSocket.connect()
mSocket.emit("mayaCommand", "cmds.polyCube()")
println("ok")
}

}
}

现在,它工作正常。

谢谢。

关于android - 无法从 Android socket.io 2 客户端连接到 node.js socket.io 3.x 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65433138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com