gpt4 book ai didi

android - 使用 Kotlin 在 Android 中实现 WebSocket

转载 作者:行者123 更新时间:2023-12-02 12:57:28 26 4
gpt4 key购买 nike

我正在尝试使用 Kotlin 在 android 中使用 Web 套接字实现简单的消息传输。
我是 kotlin 的新手,我从工作的 java 代码中手动迁移了我的代码。
但是我的代码不起作用,没有任何显示 - 即使使用了 network_security_config作为

<network-security-config>
<base-config cleartextTrafficPermitted="true" >
</base-config>

我的 websocket 实现代码是 ->
class MainActivity : AppCompatActivity() {
private lateinit var client: OkHttpClient
private var startButton: Button? = null
private var outputText: TextView? = null


private inner class EchoWebSocketListener : WebSocketListener() {
private var NORMAL_CLOSURE_STATUS: Int = 1000

override fun onOpen(webSocket: WebSocket, response: Response) {
webSocket.send("Hola there!")
webSocket.send("cool")
webSocket.close(NORMAL_CLOSURE_STATUS,"GoodBye!!")
}

override fun onMessage(webSocket: WebSocket, bytes: ByteString) {
output("Receiving "+ bytes.toString())
}

override fun onClosing(webSocket: WebSocket, code: Int, reason: String) {
webSocket.close(NORMAL_CLOSURE_STATUS, null)
output("Closing : "+ code + "/" + reason)
}

override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {
output("Error : " + t.message)
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
startButton = findViewById<Button>(R.id.start)
outputText = findViewById<TextView>(R.id.output)
client = OkHttpClient()
startButton!!.setOnClickListener{
start()
}
}

private fun start() {
val request: Request = Request.Builder().url("ws://echo.websocket.org").build()
val listener: EchoWebSocketListener = EchoWebSocketListener()
val ws: WebSocket = client.newWebSocket(request, listener)
client.dispatcher().executorService().shutdown()
}

private fun output(s: String) {
runOnUiThread({
object : Runnable {
override fun run() {
outputText!!.setText(outputText!!.text.toString() + "\n\n" + s)
}
}
})
}
}

很感谢任何形式的帮助

最佳答案

我没有过多地研究您的代码,但乍一看,您似乎在收到 onOpen 事件后就关闭了连接。我认为这可能是你的问题。

关于android - 使用 Kotlin 在 Android 中实现 WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59117207/

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