2分钟搭建一个简单的WebSocket服务器

你好同学,我是沐爸,欢迎点赞、收藏和关注。个人知乎

如何用2分钟在本地搭建一个简单的 WebSocket 服务器?其实使用 Node.js,加上一些流行的库,是很容易实现的。前端同学通过自己搭建 WebSocket 服务器,对于学习 WebSocket 是很有帮助的。接下来就一起看看吧。

在 Node.js 中,你可以使用多种库来搭建 WebSocket 服务,但最常用和流行的库之一是ws。以下是一个使用ws库在 Node.js 本地搭建 WebSocket 服务的完整示例代码。

一、安装依赖

首先,你需要安装ws库。在你的项目目录中打开终端或命令提示符,并执行以下npm命令来安装它:

npm install ws

二、服务器

安装完成后,你可以创建一个新的 JavaScript 文件(例如websocket-server.js)来编写你的 WebSocket 服务器代码。

// 引入ws库
const WebSocket = require("ws");

// 创建一个WebSocket服务器,监听3000端口
const wss = new WebSocket.Server({ port: 3000 });

// 当客户端连接时
wss.on("connection", (ws) => {
  console.log("客户端已连接");

  // 当接收到客户端的消息时
  ws.on("message", (message) => {
    console.log("收到消息: %s", message);

    // 将收到的消息发送回客户端
    ws.send(`服务器: 收到消息,内容是 ${message}`);
  });

  // 当连接关闭时
  ws.on("close", () => {
    console.log("客户端已断开连接");
  });

  // 模拟发送消息到客户端
  ws.send("欢迎连接到WebSocket服务器!");
  setInterval(() => {
    ws.send(Math.random());
  }, 1000);
});

console.log("WebSocket服务器正在监听3000端口...");

接下来,你可以通过 Node.js 运行这个服务器:

node websocket-server.js

现在,你的 WebSocket 服务器已经在本地3000端口上运行了。为了测试它,你可以使用 WebSocket 客户端(如浏览器中的 JavaScript 代码)来连接到这个服务器并发送/接收消息。

三、客户端

以下是一个简单的 HTML 和 JavaScript 示例,用于在浏览器中连接到WebSocket服务器,收集服务器的消息并发送消息给服务器:

<!DOCTYPE html>
<html>
  <head>
    <title>WebSocket Test</title>
  </head>
  <body>
    <input type="text" id="messageInput" placeholder="输入消息" />
    <button onclick="sendMessage()">发送</button>
    <button onclick="closeConnection()">手动关闭连接</button>
    <div id="messages"></div>

    <script>
      // 创建WebSocket连接
      const socket = new WebSocket("ws://localhost:3000");

      // 当连接打开时
      socket.onopen = function (event) {
        console.log("连接已建立");
        socket.send("Hello Server!");
      };

      // 当接收到服务器消息时
      socket.onmessage = function (event) {
        const messages = document.getElementById("messages");
        const message = document.createElement("p");
        message.textContent = "收到: " + event.data;
        messages.appendChild(message);
      };

      // 当连接关闭时
      socket.onclose = function (event) {
        if (event.wasClean) {
          console.log("连接已正常关闭");
        } else {
          console.log("连接异常关闭");
        }
        console.log("Code: " + event.code + " Reason: " + event.reason);
      };

      // 错误处理
      socket.onerror = function (error) {
        console.error("WebSocket错误: ", error);
      };

      // 发送消息的函数
      function sendMessage() {
        const input = document.getElementById("messageInput");
        const message = input.value.trim();
        if (message) {
          socket.send(message);
          input.value = "";
        }
      }

      // 当你想关闭连接时
      function closeConnection() {
        // 调用close方法,可选地传递一个状态码和一个原因
        socket.close(1000, "客户端主动关闭连接");

        // 注意:在调用close()之后,WebSocket实例的readyState将变为CLOSED,
        // 并且你将无法再通过这个实例发送或接收消息。

        // 如果你在close()之后还想使用这个WebSocket实例进行新的连接,
        // 你需要创建一个新的WebSocket实例。
      }
    </script>
  </body>
</html>

将上面的 HTML 和 JavaScript 代码保存为一个 HTML 文件(例如websocket-client.html),然后在浏览器中打开它。你现在应该能够向你的 WebSocket 服务器发送消息,并看到服务器响应的消息。

四、预览效果

实际效果如下:
image.png
希望对你有所帮助,赶快试试吧,下期再见!

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用Python搭建WebSocket服务器,需要使用WebSocket库和Python的内置Web框架(如Flask或Django)。以下是使用Flask的示例代码: 安装Flask和WebSocket库: ``` pip install flask pip install flask-sockets ``` 创建一个Flask应用程序: ``` from flask import Flask, render_template from flask_sockets import Sockets app = Flask(__name__) sockets = Sockets(app) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run() ``` 在上面的代码中,我们导入Flask和WebSocket库,创建Flask应用程序并创建套接字对象。我们还定义了一个基本路由来渲染模板。 接下来,我们需要将路由转换为WebSocket路由: ``` @sockets.route('/echo') def echo_socket(ws): while not ws.closed: message = ws.receive() ws.send(message) ``` 在上面的代码中,我们使用装饰器将路由转换为WebSocket路由。我们定义了一个循环来接收和发送消息。我们还可以添加其他逻辑和处理程序,以便在接收和发送消息时执行更多操作。 最后,我们需要将应用程序运行在WebSocket服务器上: ``` if __name__ == '__main__': from gevent import pywsgi from geventwebsocket.handler import WebSocketHandler server = pywsgi.WSGIServer(('localhost', 5000), app, handler_class=WebSocketHandler) server.serve_forever() ``` 在上面的代码中,我们使用`gevent`库来创建WebSocket服务器。我们定义了地址和端口,并指定了Flask应用程序和WebSocket处理程序。我们还启动了服务器并让它永远运行。 当您运行该应用程序时,您可以访问`http://localhost:5000/`并使用WebSocket客户端连接到`ws://localhost:5000/echo`,以便测试WebSocket服务器是否正在工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐爸muba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值