当前位置: 代码网 > it编程>编程语言>Javascript > 基于Node.js和ws库搭建WebSocket服务并实现消息互通的简单示例

基于Node.js和ws库搭建WebSocket服务并实现消息互通的简单示例

2024年08月06日 Javascript 我要评论
服务器会接收客户端发送的消息,并将它广播给所有其他已连接的客户端。这个HTML页面会在打开时尝试连接到WebSocket服务器,并在连接成功后发送一条消息。console.log('收到服务器消息:' + evt.data);:创建一个新的目录作为项目文件夹,并在该目录下初始化一个新的Node.js项目。console.error('连接出错:', err);ws.send('你已连接到WebSocket服务器');console.log('连接服务器成功!console.log('与服务器断开连接');

环境要求:

  • node.js环境安装
  • npm(node.js的包管理器)

步骤:

  1. 安装node.js:如果你还没有安装node.js,请从node.js官网下载并安装。

  2. 创建项目:创建一个新的目录作为项目文件夹,并在该目录下初始化一个新的node.js项目。

        mkdir my-websocket-server
        cd my-websocket-server
        npm init -y
    3. 安装websocket库:使用npm来安装ws库。

        npm install ws
    4. 创建websocket服务端:在项目目录中创建一个名为server.js的文件,并添加以下代码:

const websocket = require('ws');

const wss = new websocket.server({ port: 8080 });

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
    // 广播消息到所有客户端
    wss.clients.foreach(function each(client) {
      if (client !== ws && client.readystate === websocket.open) {
        client.send(message);
      }
    });
  });

  ws.send('你已连接到websocket服务器');
});

console.log('websocket服务正在监听8080端口...');
这段代码创建了一个监听8080端口的websocket服务器。服务器会接收客户端发送的消息,并将它广播给所有其他已连接的客户端。

5. 运行websocket服务端:在终端中运行服务端代码 

node server.js
6. 创建websocket客户端
可以使用任何支持websocket的客户端来连接这个服务器。这里我们以浏览器为例,创建一个简单的html页面作为客户端。

在项目目录中创建一个名为client.html的文件,并添加以下代码:

<!doctype html>
<html>
<body>
  <script>
    var ws = new websocket('ws://localhost:8080');

    ws.onopen = function() {
      console.log('连接服务器成功!');
      ws.send('你好,服务器!');
    };

    ws.onmessage = function(evt) {
      console.log('收到服务器消息:' + evt.data);
    };

    ws.onclose = function() {
      console.log('与服务器断开连接');
    };

    ws.onerror = function(err) {
      console.error('连接出错:', err);
    };
  </script>
</body>
</html>

这个html页面会在打开时尝试连接到websocket服务器,并在连接成功后发送一条消息。它还能够接收并显示从服务器收到的消息。

7. 打开客户端页面
使用浏览器打开client.html文件,你应该能在控制台中看到与websocket服务器的交互过程。

(0)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com