当前位置: 首页 > 面试题库 >

带有Socket.IO的NodeJS延迟发送数据

云伯寅
2023-03-14
问题内容

我正在使用Socket.IO主页(http://socket.io/)中的示例。它可以正常工作,但是在发送数据的时间与从另一端接收到数据之间存在巨大的延迟。

我正在使用XAMPP,我的目录中有socket.html,并在浏览器中使用“
http://localhost/socket.html”导航到它,并且我的服务器在端口8080上侦听。

服务器:

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

io.sockets.on('connection', function (socket) {
 socket.emit('news', { hello: 'world' });
 socket.on('my other event', function (data) {
   console.log(data);
 });
});

HTML档案:

<html>
<head>
    <script src="http://localhost:8080/socket.io/socket.io.js"></script>
    <script>
      var socket = io.connect('http://localhost:8080');
      socket.on('news', function (data) {
        console.log(data);
        socket.emit('my other event', { my: 'data' });
      });
    </script>
</head>

<body>

</body>
</html>

问题答案:

我发现了问题。

服务器中,我进行了更改:

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

var io = require('socket.io', { rememberTransport: false, transports: ['WebSocket', 'Flash Socket', 'AJAX long-polling'] }).listen(8080);

这会强制服务器使用WebSocket,Flash
Socket或长轮询。它会尝试按顺序使用它们。RememberTransport会强制服务器和客户端忘记上一次使用的连接,并尝试与上面的“传输”进行连接。

客户端,我几乎做了同样的事情。我补充说:

{ rememberTransport: false, transports: ['WebSocket', 'Flash Socket', 'AJAX long-polling']}

到套接字构造函数。所以它看起来像:

var socket = io.connect('http://localhost:843', { rememberTransport: false, transports: ['WebSocket', 'Flash Socket', 'AJAX long-polling']});

现在,它似乎可以完美运行。

多谢你们。



 类似资料:
  • 问题内容: 如果这是完全相同的内容,请纠正我,我知道这个话题经常被讨论,但是找不到确切的答案。 问题: 在MVC Web应用程序中处理Hibernate对象的最佳实用解决方案是什么? 细节: 我正在使用Hibernate,并希望在可能的情况下利用延迟加载。 我正在使用MVC风格的webapp。 我讨厌获得延迟加载初始化异常。 我讨厌不得不在事务之间重新连接Hibernate对象。 选项: 渴望装载

  • 如何延迟JMS消息发送或在不确定的时间内继续? 我使用的是Weblogic,正如您所知,在JMS发送之后,接收方将异步处理消息,但是,此时或有时外部资源还没有为接收方做好准备,因此,我想使用一些检查逻辑来延迟发送或处理消息。我猜例如:我将消息放入挂起队列,然后频繁检查资源可用性,一旦发送或继续消息? 大家都知道Weblogic是否支持这一点,或者如何实现它吗?

  • 本文向大家介绍带宽延迟积,包括了带宽延迟积的使用技巧和注意事项,需要的朋友参考一下 带宽延迟乘积是多少位可以填充网络链路的度量。它给出了发送方在等待确认之前在给定时间可以传输的最大数据量。因此,这是未确认数据的最大数量。 测量 带宽延迟乘积的计算公式是通道的链路容量与传输的往返延迟时间的乘积。 通道的链路容量是每秒传输的位数。因此,其单位为bps,即每秒位数。 往返延迟时间是信号从发送方发送到接收

  • 每当在服务器上删除时,我还想从中删除一个适当的实体。为此,我可以使用并且每当数据库中不再存在父时,也会被删除。听起来不错。 每当我使用更新数据库中的福利时,就会出现问题实际上执行和操作,但是会在内部触发的,因此,该表中的所有数据也会被删除。 (类似的问题出现在和表格上。) 我正在寻找一种在事务结束前暂时禁用外键约束的方法。也就是说,不要在事务期间验证外键,而只在事务结束时验证外键。我仍然希望房间自

  • 问题内容: 是否有用于NodeJS的库,用于发送带有附件的邮件? 问题答案: 是的,这非常简单,我使用nodemailer: 然后阅读文件并发送电子邮件:

  • 一个字符串 a = '1234567890' 联调发现数据返回有递增延迟的问题,请问怎么发送数据可以解决延迟的问题?