matlab - 使用 Socket.io 和 Matlab

标签 matlab sockets websocket socket.io

我设置了 socket.io本地主机上的服务器(nodejs)

var io = require('socket.io').listen(8000);

io.sockets.on('connection', function (socket) {

    setInterval(function(){
        socket.emit("updatedPrice", 100.3);
    },2000);
});

我已经在我的浏览器上对此进行了测试,它可以正常工作。

但是,如果我无法读取 Matlab 上的数据
>> tcpipClient = tcpip('localhost',8000,'NetworkRole','Client')

   TCPIP Object : TCPIP-localhost

   Communication Settings 
      RemotePort:         8000
      RemoteHost:         localhost
      Terminator:         'LF'
      NetworkRole:        client

   Communication State 
      Status:             closed
      RecordStatus:       off

   Read/Write State  
      TransferStatus:     idle
      BytesAvailable:     0
      ValuesReceived:     0
      ValuesSent:         0


>> set(tcpipClient,'InputBufferSize',7688);
>> set(tcpipClient,'Timeout',30);
>> fopen(tcpipClient);
>> rawData = fread(tcpipClient,961,'double');
Warning: Unsuccessful read:  The specified amount of data was not returned
within the Timeout period. 

最佳答案

这可能会复活一个老问题,但这是我一开始不明白的事情,所以希望它对其他人有帮助。

当你说“我已经在我的浏览器上测试了它并且它工作正常”时,我假设你使用了客户端 socket.io 库。这就是 socket.io 的运作方式,据我所知,这是它运作的唯一方式。这是因为 socket.io 是一个相对高级的库,它通过广播到多个 websocket 等为 web 提供了很多功能。值得注意的是,socket.io 默认情况下甚至不使用 websocket,它“升级”到它们基于可用性,同时能够回退到旧的解决方案,如长轮询 (https://en.wikipedia.org/wiki/Socket.IO)。 Websockets 是一种协议(protocol),它本身很可能是通过 tcp/ip 协议(protocol)实现的,但是除非您专门实现 socket.io 对 websockets 的使用,否则 matlab 中的 tcp/ip 函数无法与 socket.io 通信。即使你可以,它也会很困惑,而且工作量远远超过它的值(value)。

我对 matlab 和 node 之间通信的建议是根据您的预期用途坚持使用 tcp/ip 协议(protocol)或 websockets 协议(protocol)。 Matlab 通过外部代码 (https://www.mathworks.com/matlabcentral/fileexchange/50040-jebej-matlabwebsocket) 具有 websockets 兼容性,并且 node 的 npm 将为您提供通过 tcp/ip 或 websockets 进行通信的模块。

关于matlab - 使用 Socket.io 和 Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23089437/

相关文章:

networking - socket.recvfrom 总是返回有效地址吗?

c - 单 socket 多线程接收器

java - Tomcat 在自定义 CORS 过滤器上抛出奇怪的错误

matlab 坐标轴转百分比

matlab - 如何正确命名和组织 MATLAB 文件类?

algorithm - 遗传算法与matlab如何使用分类精度作为适应度函数

node.js - AWS Elastic Beanstalk 与 ALB : Node Websocket times out

arrays - 在 MATLAB 中创建一个充满一个数字的数组的优雅方法?

sockets - 使用 Java 发送零数据 TCP/IP 数据包

haskell - 无法将多个客户端与 Haskell Websocket 服务器一起使用