作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 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/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!