我一直在尝试在Android上使用
有没有人能够提供如何继续进行的建议?是否还有更好的WebSocket库可用?这是我正在使用的服务。
OkHttp WebSockets
处理wss://
URL却无功而返。当我传递一个带有wss://
协议的URL时,它会被替换为https://
。然后,它肯定会失败。有没有人能够提供如何继续进行的建议?是否还有更好的WebSocket库可用?这是我正在使用的服务。
class WebsocketService(private val okHttpClient: OkHttpClient) :
WebSocketListener() {
private lateinit var webSocket: WebSocket
private lateinit var serverListener: ServerListener
fun connect(listener: ServerListener) {
this.serverListener = listener
val request = Request.Builder().url(SOCKET_URL).build()
okHttpClient.newWebSocket(request, this)
}
override fun onOpen(webSocket: WebSocket?, response: Response?) {
super.onOpen(webSocket, response)
Timber.e("On Open %s", response.toString())
}
override fun onFailure(webSocket: WebSocket?, t: Throwable?, response: Response?) {
super.onFailure(webSocket, t, response)
Timber.e("On Failure %s", response.toString())
}
override fun onClosing(webSocket: WebSocket?, code: Int, reason: String?) {
super.onClosing(webSocket, code, reason)
Timber.e("On Closing %s", reason)
}
override fun onMessage(webSocket: WebSocket?, text: String?) {
super.onMessage(webSocket, text)
Timber.e("On Message %s", text)
}
override fun onMessage(webSocket: WebSocket?, bytes: ByteString?) {
super.onMessage(webSocket, bytes)
Timber.e("On Message Bytes %s", bytes)
}
override fun onClosed(webSocket: WebSocket?, code: Int, reason: String?) {
super.onClosed(webSocket, code, reason)
Timber.e("On Closed %s", reason)
}
enum class ConnectionStatus {
DISCONNECTED,
CONNECTED
}
interface ServerListener {
fun onNewMessage(message: String)
fun onStatusChange(status: ConnectionStatus)
}
}