Nodejs中这个ws协议是什么?

Nodejs中这个ws协议是什么?

<img src=http://img.itc.cn/photo/jTndPPgpP3g> 赶脚好奇怪,微博居然有这个协议

搜了一下发现和HTML5有关, 话说,为何会连不上呢:( nodejs与websocket相关都有哪些包比较好呢?

5 回复

Node.js 中的 WebSocket 协议

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

示例代码

WebSocket 服务器端 (使用 ws 模块)

首先,你需要安装 ws 模块,可以通过以下命令安装:

npm install ws

然后,你可以创建一个简单的 WebSocket 服务器:

const WebSocket = require('ws');

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

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

    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.on('close', function close() {
        console.log("A client disconnected");
    });
});

上述代码创建了一个 WebSocket 服务器,监听端口 8080。当客户端连接时,它会打印一条消息。当收到客户端的消息时,它会在控制台打印消息,并将该消息发送给所有其他连接的客户端。

WebSocket 客户端 (使用 ws 模块)

接下来,我们来创建一个简单的 WebSocket 客户端:

const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:8080');

ws.on('open', function open() {
    console.log("Connected to server");
    ws.send('Hello Server!');
});

ws.on('message', function incoming(data) {
    console.log('Received from server:', data);
});

ws.on('close', function close() {
    console.log("Disconnected from server");
});

上述代码创建了一个 WebSocket 客户端,连接到运行在 ws://localhost:8080 的 WebSocket 服务器。当连接成功后,它会发送一条消息 “Hello Server!” 到服务器,并监听来自服务器的消息。

总结

WebSocket 协议在现代 Web 应用中非常有用,特别是在需要实时通信的应用中,例如在线游戏、聊天应用、股票行情等。Node.js 社区提供了多个 WebSocket 相关的库,其中 ws 是最常用的之一。希望这些示例代码能帮助你更好地理解和使用 WebSocket 在 Node.js 中的应用。


看看websocket协议,看提示好像是握手都没成功。网上好多这个协议的文章。

那个聊天的可能就是用websocket做的

Node.js 中的 ws 协议是一种基于 WebSocket 技术的库,用于在客户端和服务器之间实现实时双向通信。WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。相比传统的 HTTP 轮询技术,WebSocket 提供了更高效、更低延迟的实时数据交换能力。

示例代码

服务器端代码

首先安装 ws 库:

npm install ws

然后创建一个简单的 WebSocket 服务器:

const WebSocket = require('ws');

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

wss.on('connection', function connection(ws) {
    console.log("A client connected!");

    // 当接收到消息时触发
    ws.on('message', function incoming(message) {
        console.log('received: %s', message);
    });

    // 向客户端发送消息
    ws.send('Hello, Client!');
});

客户端代码

创建一个简单的 HTML 文件,并引入 WebSocket API:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>WebSocket Test</title>
</head>
<body>
    <script>
        const ws = new WebSocket('ws://localhost:8080');

        ws.onopen = () => {
            console.log('Connected to server');
            ws.send('Hello, Server!');
        };

        ws.onmessage = (event) => {
            console.log('Message from server:', event.data);
        };

        ws.onclose = () => {
            console.log('Disconnected from server');
        };
    </script>
</body>
</html>

解释

  1. 服务器端:创建了一个 WebSocket 服务器,监听 8080 端口。当有新的连接时,它会打印一条消息,并在接收到消息时打印出来。
  2. 客户端:使用 WebSocket 连接到服务器,并在连接成功后发送一条消息。同时,它监听从服务器接收的消息,并打印出来。

如果你遇到连接问题,可以检查以下几个方面:

  • 确保服务器和客户端的 URL 一致。
  • 确保防火墙没有阻止端口 8080。
  • 确保客户端和服务器在同一网络环境中,或者没有跨域问题。
回到顶部