socket请求
协议:
常见的 URL 协议规范(Scheme)对照表:
协议(Scheme) | 说明 |
---|---|
http:// | 非加密的网页请求(80端口) |
https:// | 加密的网页请求,使用 TLS(443端口) |
ws:// | 非加密的 WebSocket 请求(80端口) |
wss:// | 加密的 WebSocket 请求(443端口) |
ftp:// | 文件传输协议(FTP) |
file:// | 本地文件路径 |
mailto: | 打开邮件客户端 |
tel: | 拨打电话(通常在手机上) |
okhttp进行网络请求
✅ 一、引入依赖
implementation("com.squareup.okhttp3:okhttp:4.12.0")
✅ 二、定义 WebSocket 监听器
import okhttp3.Response
import okhttp3.WebSocket
import okhttp3.WebSocketListener
import okio.ByteString
import android.util.Logclass MyWebSocketListener : WebSocketListener() {override fun onOpen(webSocket: WebSocket, response: Response) {Log.d("WebSocket", "连接成功")webSocket.send("Hello Server")}override fun onMessage(webSocket: WebSocket, text: String) {Log.d("WebSocket", "收到文本消息: $text")}override fun onMessage(webSocket: WebSocket, bytes: ByteString) {Log.d("WebSocket", "收到字节消息: ${bytes.hex()}")}override fun onClosing(webSocket: WebSocket, code: Int, reason: String) {Log.d("WebSocket", "连接关闭中: $code / $reason")webSocket.close(1000, null)}override fun onClosed(webSocket: WebSocket, code: Int, reason: String) {Log.d("WebSocket", "连接已关闭: $code / $reason")}override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {Log.e("WebSocket", "连接失败", t)}
}
✅ 三、创建并连接 WebSocket
import okhttp3.OkHttpClient
import okhttp3.Requestfun startWebSocket() {val client = OkHttpClient()val request = Request.Builder().url("wss://echo.websocket.org") // 替换成你自己的 WebSocket 服务地址.build()val listener = MyWebSocketListener()val webSocket = client.newWebSocket(request, listener)// 可选:关闭客户端时关闭WebSocket连接// client.dispatcher.executorService.shutdown()
}
✅ 四、注意事项
URL 要使用
ws://
或wss://
,分别表示不加密与加密的 WebSocket。WebSocket 是异步的,不需要你自己处理线程。
OkHttp 会自动管理连接池和线程,但如果不再使用记得关闭它们。