【问题标题】:Is it possible to have a Node.js websocket client?是否有可能有一个 Node.js websocket 客户端?
【发布时间】:2020-08-28 12:25:50
【问题描述】:

到目前为止,我只看到了将 Node.js 中的应用程序设置为 websockets 的服务器的示例。通常客户端是基于浏览器的,我还没有看到 Node.js 客户端的示例。

Node.js websocket 客户端的例子怎么这么少? 或者,客户端-服务器通信还有哪些其他选项?

【问题讨论】:

  • @JeremyThille — Node.js commonly 在服务器上运行。然而,它是一个通用的运行时。

标签: javascript node.js websocket


【解决方案1】:

其实有很多不同的例子。

我以 websockets 包为例

https://www.npmjs.com/package/websocket

这段代码在 Node.js 中演示了一个客户端,而不是在浏览器中

#!/usr/bin/env node
var WebSocketClient = require('websocket').client;

var client = new WebSocketClient();

client.on('connectFailed', function(error) {
    console.log('Connect Error: ' + error.toString());
});

client.on('connect', function(connection) {
    console.log('WebSocket Client Connected');
    connection.on('error', function(error) {
        console.log("Connection Error: " + error.toString());
    });
    connection.on('close', function() {
        console.log('echo-protocol Connection Closed');
    });
    connection.on('message', function(message) {
        if (message.type === 'utf8') {
            console.log("Received: '" + message.utf8Data + "'");
        }
    });

    function sendNumber() {
        if (connection.connected) {
            var number = Math.round(Math.random() * 0xFFFFFF);
            connection.sendUTF(number.toString());
            setTimeout(sendNumber, 1000);
        }
    }
    sendNumber();
});

client.connect('ws://localhost:8080/', 'echo-protocol');

这很简单,如果您需要进一步的帮助,请告诉我们!

【讨论】:

  • 感谢您的详细解答!
  • 确定没问题
  • 感谢您的示例。是否有任何示例如何保持连接并处理接收到的数据?
  • 请尝试阅读此站点:npmjs.com/package/websocket [当前功能 => 可调设置状态:-> 是否出于保活目的自动发送 ping 帧 -> 保活 ping 间隔] 尝试阅读文档。例如,我是手动完成的,但这还有另一个原因。并且需要在 connection.on('message'... 部分处理数据,因为这是接收数据的地方。
猜你喜欢
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 2011-01-05
  • 2011-03-09
  • 2013-10-17
  • 2011-04-20
  • 1970-01-01
  • 2017-05-26
相关资源
最近更新 更多