【问题标题】:Read Data using SocketIo on NodeJS side?在 NodeJS 端使用 SocketIo 读取数据?
【发布时间】:2021-01-19 07:12:24
【问题描述】:

许多教程,尤其是那些“聊天应用程序”,向您展示了如何使用 NodeJS 作为您的 SocketIO 服务器,然后您在 HTML 页面中实现一个 JS 脚本作为客户端。

我想知道如何通过 NodeJS 连接到 websocket?

例如,我有一个运行 websocket 的页面:https://i.imgur.com/hPGmzWv.png

我不想通过这个页面连接到这个 websocket,而是想通过 NodeJS 读取(并希望保存)数据。

如何使用 SocketIO 做到这一点?

【问题讨论】:

    标签: node.js sockets websocket socket.io


    【解决方案1】:

    Socket.IO 实际上并不是一个 Web Socket 客户端,严格来说。它是顶部的一层,可以使用多种传输方式。 Web Sockets 是其中一种传输方式,但长轮询 AJAX 和其他方法也是如此。

    如果你想连接到 Web Socket 服务器,你需要一个 Web Socket 客户端库。我的首选是ws。从他们的示例文档中:

    const WebSocket = require('ws');
    
    const ws = new WebSocket('ws://www.host.com/path');
     
    ws.on('open', function open() {
      ws.send('something');
    });
     
    ws.on('message', function incoming(data) {
      console.log(data);
    });
    

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

    【讨论】:

    • 非常有趣!我想我误解了 SocketIO 和 ws 的作用。谢谢!例如,如果我想保存流的内容(假设正在通过此套接字播放音频),这不起作用吗? pastebin.com/8Auixdpf(我觉得应该,但是尝试打开它不起作用,看起来字节在增加)
    • @Robert 可能,但我实际上怀疑源流搞砸了。浏览器中的开发人员工具不应尝试将二进制数据显示为文本,因此它们可能会将 MP3 二进制数据作为文本发送……这是错误的做法。这可能会弄乱传入消息的编码,并且它被错误地写入文件。不过,这只是一种预感……如果没有实际看到,就无法确定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多