socket请求

发布于:2025-07-25 ⋅ 阅读:(17) ⋅ 点赞:(0)

协议:

常见的 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.Log

class 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.Request

fun 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 会自动管理连接池和线程,但如果不再使用记得关闭它们。


网站公告

今日签到

点亮在社区的每一天
去签到