import android.util.Log
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.java_websocket.server.WebSocketServer
import org.java_websocket.handshake.ClientHandshake
import org.java_websocket.WebSocket
import java.lang.Exception
import java.net.InetSocketAddress
import java.util.concurrent.CopyOnWriteArraySet
import java.util.concurrent.atomic.AtomicInteger
/**
* MyWebSocketServer 服务端
*/
class MyWebSocketServer(port: Int) : WebSocketServer(InetSocketAddress(port)) {
override fun onOpen(conn: WebSocket, handshake: ClientHandshake) {}
override fun onClose(conn: WebSocket, code: Int, reason: String, remote: Boolean) {
WsPool.remove(conn)
println(reason)
}
override fun onMessage(conn: WebSocket, message: String) {
if (null != message && message.startsWith("online")) {
WsPool.add(conn)
} else if (null != message && message.startsWith("offline")) {
WsPool.remove(conn)
}
}
override fun onError(conn: WebSocket, ex: Exception) {
println("on error")
}
override fun onStart() {
Log.d("websocket", "onStart(),WebSocket服务端启动成功")
}
private fun sendImageFrame() {
// CoroutineScope(Dispatchers.IO).launch {
// application!!.mCurrentImageFrameBase64.collect{
// for (item in WsPool) {
// item.send(it)
// }
// Log.e("当前在线人数:","${WsPool.size}")
// }
// }
}
companion object {
private val allConnectCount = AtomicInteger(0)
private val WsPool = CopyOnWriteArraySet<WebSocket>()
}
init {
sendImageFrame()
}
WebSocket Android 服务端
最新推荐文章于 2025-03-08 13:31:09 发布