Skip to content

ws(WebSocket) ==> http,wss ==> https

事件

WebSocket 服务器事件

  1. connection

    • 当一个新的WebSocket连接被建立时触发。
    • 回调函数的参数是一个WebSocket实例,代表新的连接。
  2. error

    • 当服务器遇到错误时触发。
    • 回调函数的参数是一个Error对象,包含错误信息。
  3. headers

    • 当一个新的WebSocket连接请求被接收时触发,但尚未建立连接。
    • 回调函数的参数是请求头和响应头对象,允许您修改响应头。
  4. listening

    • 当服务器开始监听指定端口时触发。
  5. close

    • 当服务器关闭时触发。
js
const WebSocket = require('ws')

const wss= new WebSocket.Server({port:3000})

wss.on('connection',ws=>{ // 事件监听器
    console.log('我是Socket 我连接上了')

    ws.on('message',data=>{
        // 接收到指挥
        console.log('收到消息:'+data)
        ws.send('消息结果:'+data)
    })

    ws.on('close',()=>{
        console.log('走了~ 走了')
    })

})

WebSocket 客户端事件

  1. open

    • 当WebSocket连接成功建立时触发。
  2. message

    • 当接收到来自服务器的消息时触发。
    • 回调函数的参数是接收到的消息数据(可以是字符串、Buffer或ArrayBuffer)。
  3. error

    • 当连接遇到错误时触发。
    • 回调函数的参数是一个Error对象,包含错误信息。
  4. close

    • 当WebSocket连接关闭时触发。
    • 回调函数的参数是一个CloseEvent对象,包含关闭代码和关闭原因。
  5. ping

    • 当接收到服务器的ping帧时触发。
    • 回调函数的参数是ping帧的数据(如果有的话)。
  6. pong

    • 当接收到服务器的pong帧时触发。
    • 回调函数的参数是pong帧的数据(如果有的话)。
  7. unexpected-response

    • 当接收到一个非101状态码的响应时触发。
    • 回调函数的参数是ClientRequest对象、Response对象和Buffer对象(包含响应数据)。
  8. upgrade

    • 当WebSocket升级请求被发送时触发。
    • 回调函数的参数是 OutgoingMessage 对象、IncomingMessage 对象和响应头对象

客户端应当设置对应事件的事件处理器

js
methods: {
   connectWebSocket() {
     this.webSocket = new WebSocket('ws://localhost:3000');

     this.webSocket.onopen = () => {
       this.connected = true;
       console.log('Connected to WebSocket server.');
     };

     this.webSocket.onmessage = (event) => {
       this.messages.push(event.data);
       console.log('Received:', event.data);
     };

     this.webSocket.onclose = () => {
       this.connected = false;
       console.log('Disconnected from WebSocket server.');
       // Optionally, try to reconnect after a delay
       setTimeout(this.connectWebSocket, 5000);
     };

     this.webSocket.onerror = (error) => {
       console.error('WebSocket error:', error);
     };
   },
   ...