and*_*ing 5 android websocket okhttp
我一直在尝试使用OkHttp WebSockets了wss://Android上的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)
}
}
Run Code Online (Sandbox Code Playgroud)
OkHttp 用于建模 URL 的 HttpUrl 类仅建模http:和https:方案进行建模。但这不太可能是您的网络套接字失败的原因。方案更改旨在作为 OkHttp 内部的实现细节,并且\xe2\x80\x99不会影响行为。
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |