【问题标题】:Node.js OSC Module send TCPNode.js OSC 模块发送 TCP
【发布时间】:2017-03-07 21:19:05
【问题描述】:

我正在使用 OSC 模块 https://github.com/colinbdclark/osc.js,但我正在努力让它通过 TCP 工作。我找不到任何使用 TCP 的示例,它们都是基于 UDP 的。

我尝试在 node.js 中创建一个 TCP 客户端,但仍然难以将消息正确编码为 OSC 格式。我也相信它也必须用 SLIP 编码?

我是新手,所以要温柔。

如果有人能指出我正确的方向或提供一个关于在 node.js 中通过 TCP 发送 OSC 消息的示例,那就太棒了

谢谢!

韦德

PS。也很高兴使用 osc-min 模块。据我所知,您可以将消息编码为 osc 消息并存储在 var 中。但仍然无法让它在 TCP 上工作 .. 在 UDP 上工作正常,但我的回复比 UDP 可以处理的要大,如果这有意义的话

【问题讨论】:

    标签: javascript node.js sockets tcp osc


    【解决方案1】:

    我对 OSC 不是很熟悉,所以不太了解它的内部结构,但是osc.js确实支持 TCP 传输,如下所示:

    let server = new osc.TCPSocketPort({});
    
    server.open('127.0.0.1', 57121); // change to remote host/port
    
    server.on('ready', () => {
      console.log('ready');
      ...
    });
    

    根据the README

    对于串行和 TCP 等基于流的协议,osc.js 将为您处理 SLIP 帧。

    【讨论】:

    • 非常感谢。目前在火车上,笔记本电脑是平的。但我会在今晚晚些时候尝试。我找不到如何通过 TCP 使用它的示例,但从你的判断来看,我越来越接近了;)会尽快通知你。
    • 太棒了!工作一个我从服务器更改它,因为它已经定义......现在我得到回复使用 - let tcpServer = new osc.TCPSocketPort({}); tcpServer.open('127.0.0.1', 53000); tcpServer.send({ 地址:"/version", args: 1, }, '127.0.0.1', 53000); tcpServer.on('data', function(data) { console.log('DATA:' + data); });但是控制台中的回复与 UDP 消息并不完全相同 �/reply/version,s{"status":"ok","address":"\/version","data":"4.0.6" }� 通常我会通过 data.status 访问它以获取状态值。
    • @Wayde 我没有要测试的 OSC 服务器,但看起来您正在那里获取原始数据包数据。由于 SLIP 框架,您可能需要先解压缩数据。不要监听data 事件,而是尝试监听message 事件(FWIW,我将所有这些从osc.js 源和it's example repository 拼凑在一起)。
    • 当然,我使用了与工作 UDP 回复相同的方法 tcpServer.on('message', function(oscBundle, timeTag, info) { console.log('Message: ' + oscBundle.args ); });非常感谢您的帮助!!
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2012-01-02
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多