wewebsocket 并发连接数socket最大连接数是多少(websocket 并发连接数)

来源:LoongPanda说明介绍:聊天室,功能主要:实时对话+实时在线人数+查看历史记录+心跳检测。技术栈:前端:vue3+vite+typescript+vue-router4后端:nodeJs+express+mysql+nginx+阿里云websocketAPI//连接constwsUrl:string=ref("")

来源:Loong Panda

说明

介绍: 聊天室,功能主要:实时对话 + 实时在线人数 + 查看历史记录 + 心跳检测。技术栈:

前端: vue3+ vite + typescript + vue-router4

后端:nodeJs + express + mysql + nginx + 阿里云

websocket API

// 连接

const wsUrl: string = ref("")

ws.value = new WebSocket(wsUrl.value)

// 监听服务端的消息

ws.value.onmessage = function (res: any) {

// to do something

const resData = JSON.parse(res.data)

}

// 连接事件

ws.value.onopen = function(res: any) {

// ElMessage({ "message": "连接成功,open", "type": "success" })

}

// 错误事件

ws.value.onerror = function(res: any) {

// ElMessage({ "message": "连接出错了", "type": "error" })

}

// 连接端开事件

ws.value.onclose = function(res: any) {

// ElMessage({ "message": "连接断开", "type": "warning" })

}

示例:

const token: string = ref("")

const ws: any = ref(null)

const reConnectCountRange: number = ref(50) // 允许重连的次数

const reConnectCount: number = ref(1) // 重连计数

const heartCountRange: number = ref(3) // 允许心跳次数范围,超出时重连

const heartCount: number = ref(1) // 心跳计数

const heartTimer: any = ref(null)

const wsUrl: string = ref("")

function connectWs () {

pageIndex.value = 1

showLoading.value = false

wsUrl.value = `ws://xxxx:888/ws?token=${token.value}`;

if (!token.value) {

return false

}

ws.value = new WebSocket(wsUrl.value)

ws.value.onmessage = function (res: any) {

// console.log("message", JSON.parse(res.data))

const resData = JSON.parse(res.data)

reConnectCount.value = 1

if (resData.code === 200) {

if (resData.isCone === 0) {

pageTotal.value = resData.data.count

onlineCount.value = resData.userCount

chatList.value = resData.data.map((x: any) => {

x.createTime = formatLately(x.createTime)

return x

})

} else if (resData.isCone === 1) {

const x: any = resData.data

x.createTime = formatLately(x.createTime)

chatList.value.push(x)

}

scrollBottom()

} else if (resData.code === 100) {

heartCount.value = 1

} else if (resData.code === 500) {

onlineCount.value = resData.userCount

} else if (resData.code === 400) {

onlineCount.value = resData.userCount

}

}

// 心跳

heartMethod()

ws.value.onopen = function(res: any) {

// ElMessage({ "message": "连接成功,open", "type": "success" })

}

ws.value.onerror = function(res: any) {

// ElMessage({ "message": "连接出错了", "type": "error" })

}

ws.value.onclose = function(res: any) {

// ElMessage({ "message": "连接断开", "type": "warning" })

}

}

// 心跳检测

function heartMethod() {

heartTimer.value = setInterval(() => {

if (heartCount.value < heartCountRange.value) {

if (ws.value) {

ws.value.send(JSON.stringify({ "code": 100, "msg": "前端的心跳请求" }))

heartCount.value++

}

} else {

ElMessage({ "message": "超出心跳次数, 准备重连!", "type": "warning" })

clearInterval(heartTimer.value)

if (ws.value) {

ws.value.close()

ws.value = null

}

heartCount.value = 1

// 限制重连次数

if (reConnectCount.value <= reConnectCountRange.value) {

connectWs()

reConnectCount.value++

} else {

ElMessageBox.Confirm(

"超出重连次数",

"",

{ "showconfirmButton": true, "showCancelButton": true, "confirmButtonText": "重连", "cancelButtonText": "取消", "type": "success" })

.then(() => {

reConnectCount.value = 1

connectWs()

})

}

}

}, 1000)

}

wewebsocket 并发连接数socket最大连接数是多少(websocket 并发连接数)

项目地址:Loong Panda

原创文章,作者:admin,如若转载,请注明出处:https://www.cshaobangshou.cn/126682.html