Node+Express创建一个WebSocket服务器实例

Node+Express创建一个WebSocket服务器实例

创建Express

mkdir socket-server
cd socket-server
npm init

用该npm init命令为您的应用程序创建一个package.json文件。此命令会提示您输入许多信息,例如应用程序的名称和版本。

entry point: (app.js)

我们可以改成app.js,作为我们的入口文件,也可以默认index.js

现在在 socket-server目录下面安装Express

npm install express

安装ws

npm install ws
//或者
yarn add ws

构建WebSocket服务器实例

app.js文件下:

const express = require('express')
const app = express()
const port = 3000
//创建WebSocket服务器实例
const { WebSocketServer } = require('ws')
//指定要运行的端口
const wss = new WebSocketServer({ port8080 });

wss.on('connection', ws => {
  //计算客户数量
  console.log(wss.clients.size + ' clients connected');
  //发送给所有客户
  wss.clients.forEach(client => {
    //发送信息
    client.send('甄嬛传讨论组!!!')
    client.send(wss.clients.size + '人一起在讨论')
  })
  //从客户端接收到数据时调用
  ws.on('message',data=>{
    //显示消息内容
    console.log(data.toString());
    //如果消息是空的
    if (data.toString() === '') {
      console.log('消息为空')
    }else{
      //向客户端发送消息
      wss.clients.forEach(client => {
        console.log(`分发消息:${data}`)
        client.send(`${data}`)
      })
    }
  })
  //断开连接
  ws.on('close',()=>{
    //计算客户数量
    console.log(wss.clients.size + ' clients connected');
    wss.clients.forEach(client => {
      //发送信息
      client.send('一个退出了讨论组!!!')
      client.send(wss.clients.size + '人一起在讨论')
    })
  })

  //错误调用
  ws.onerror = function (err{
    console.log('websocket error',err)
  }
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

连接测试

项目根目录下面创建一个index.html文件,然后连接我们的WebSocket

//app.js
...
app.get('/',(req,res) => {
  res.sendFile(__dirname + '/index.html')
})
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket Demo</title>
</head>
<body>
<input type="text" id="message" placeholder="Type message here">
<button onclick="send()">Send</button>
<script>
    const socket = new WebSocket('ws://localhost:8080');
    socket.onmessage = (event) => {
        console.log(event.data);
    };
    function send({
        const message = document.getElementById('message').value;
        socket.send(message);
    }
</script>
</body>
</html>

测试

运行测试

npm start

多打开几个浏览器测试:

Node+Express创建一个WebSocket服务器实例
image.png

看控制台打印

Node+Express创建一个WebSocket服务器实例
image.png

以上就是今日分享的文章,希望小伙伴们都能有收获哦!!晚安啦!


原文始发于微信公众号(大前端编程教学):Node+Express创建一个WebSocket服务器实例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/224136.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!