使用websocket书写即时通讯功能

注意:要使用websocket创建即时通讯,要先安装websocket。

npm install ws
  1. 创建websocket服务器(文件名称:webSocketServer.js)
const webSocketServer = require('ws').Server
const wss = new webSocketServer({port:3000})

wss.on('connection',function connection(ws){
  console.log('client connection');

  ws.on('message',function incoming(message){
    console.log(message.toString('utf-8'));
    wss.clients.forEach(function each(client){
      // if(client !== ws && client.readyState === WebSocket.OPEN){
      //   client.send(message)
      // }
      client.send(message)
    })
  })

  ws.on('close',function close(){
    console.log('client disconnected');
  })
})

     2.在客户端上创建websocket链接(文件名称:websocket.js)

const socket = new WebSocket('ws://localhost:3000')

socket.addEventListener('open', function (event) {
  console.log('websocket connected');
})

socket.addEventListener('message', function (event) {
  // console.log('received', event.data);
  //将[object Blob]转换为对象的方法是使用JavaScript中的FileReader对象。
  // 可以使用FileReader对象的readAsText()方法来读取Blob对象中的数据并将其转换为字符串,
  // 然后使用JSON.parse()方法将字符串转换为JavaScript对象
  var reader = new FileReader();
  reader.readAsText(event.data);
  reader.onload = function () {
    const div = document.createElement('div')
    var bodyNode = document.querySelector('body');
    div.innerHTML = reader.result
    bodyNode.appendChild(div)
    //处理转换后的JavaScript对象
  }
})

socket.addEventListener('close', function (event) {
  console.log('webSocket disconnected');
})
export default socket

      3. 创建发送消息事件(文件名称:index.html)

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>即时通讯</title>
</head>

<body>
  <input id="inputId" type="text">
  <button id="submit">发送</button>

  <script type="module">
    import socket from './webSocket.js'

    const submit = document.getElementById('submit')
    submit.addEventListener('click', function (e) {
      const text = document.getElementById('inputId').value
      socket.send(text)
    })
  </script>
</body>

</html>

      4.运行websocket服务器(在终端运行)

node webSocketServer.js

     5. 在浏览器运行index.html文件,输入内容点击发送按钮即可实现即时通讯功能。

 

 

 

在不同浏览器上打开多个窗口,都可以实现接收另一端发送的消息 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值