WebSocket 实现长连接演示代码

摘要:
服务器代码(节点)constWebSocket=require('ws')constws=newWebSocket。服务器({port:8080},()=˃{console.log('socketstart')})//创建服务器//连接侦听器clinet表示连接的客户端对象有多个letclinet=[]//保存所有客户端连接ws.on('Connection',(clinet)=˃{

服务端代码(node)

const WebSocket = require('ws')
const ws = new WebSocket.Server({ port: 8080 },()=>{
    console.log('socket start')
})
// 创建服务器
// 连接监听 clinet表示已经连接的客户端对象有多个

let clinets=[] //保存所有客户端连接
ws.on('connection',(clinet)=>{
  console.log('客户端已连接')
  clinets.push(clinet)
  // clinet.send('欢迎广临')// 主动向前端发送数据  只能发送字符串

  clinet.on('message',(msg)=>{
    // 监听客户端发送消息
    console.log('来自前端的问候:')
    console.log(msg)
  })

  clinet.on('close',(msg)=>{
    // 客户端主动断开连接
    console.log('客户端主动断开连接')
  })  
})

setTimeout(()=>{
  sendAll()
},20000)

//群发 广播
function sendAll(){
  for (let index = 0; index < clinets.length; index++) {
    let  num=parseInt(Math.random()*200)%3+1
     clinets[index].send(JSON.stringify({type:num}))
    
  }
}

客户端(H5)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <button onclick="sendserver()">send server</button>
  <script>
    const ws = new WebSocket('ws://localhost:8080/')
    ws.onopen=function(){
      console.log('与服务器连接')
    }
    ws.onmessage=function(msg){
      console.log(msg)
      console.log('来自服务器的问候:'+msg.data)
      let data=JSON.parse(msg.data)
      switch(data.type){
        case 1 :
          alert('恭喜中间')
          break;
      
      case 2 :
          alert('会员到期')
          break;
      
      case 3 :
          alert('收到信息请注意查收')
          break;
      
    }
  }
    ws.onclose=function(){
      console.log('服务器主动断开连接')
    }
    function sendserver() {
        ws.send('你好我来了')
    } 

  </script>
</body>
</html>

ps

1.websocket 长连接是没有跨域问题的

2.服务器端和客户端都是多对多的

3.websocket是H5的新特性,受浏览器限制,因此老版本的浏览器可能就不行了

免责声明:文章转载自《WebSocket 实现长连接演示代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.net core 3.1python爬虫数据解析之BeautifulSoup下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

nginx部署(普通用户)

1. Install Nginx software prerequisites : $ sudo yum install pcre pcre-devel openssl-devel perl gcc make -y 2. Download Nginx from official website and extract it : $ wget http:...

pm2常用命令

pm2是node进程管理器,用于在服务器上搭建node服务。整理了下常用的一些命令 安装: npm install pm2 -g //安装pm2 pm2 update // 更新pm2 pm2 uninstall pm2 //移除pm2 开启关闭: pm2 start server.js //启动server.js进程 pm2 start server....

laravel的monolog使用

Laravel 集成了Monolog日志函数库,Monolog 支持和提供多种强大的日志处理功能。 1、设置,日志模式 (1)Laravel 提供可立即使用的single、daily、syslog和errorlog日志模式。 例如,如果你想要每天保存一个日志文件,而不是单个文件,则可以在config/app.php配置文件内设置log变量:'log' =&...

logrotate日志不轮转呢?_新日志size0

程序,要管理log,留作日后的后续功能处理和统计和领导需要。因为懒得写,所以直接用了syslog函数,把log交给rsyslog去写了。然后用logrotate每天做日志轮转。 两种log分别发送到了local6.info和local6.notice。 #define logInfo(...) pthread_mutex_lock(&l...

使用 js 测试 websocket 连接

参考:https://blog.csdn.net/linysuccess/article/details/109223712 配合上篇文章,代码如下: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <m...

你真的会websocket吗

Websocket WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范。 WebSocket协议支持(在受控环境中运行不受信任的代码的)客户端与(选择加入该...