【问题标题】:use socket.io on other port在其他端口上使用 socket.io
【发布时间】:2012-11-02 04:08:14
【问题描述】:

我正在尝试基于 NodeJS 和 Socket.IO 进行聊天 当我在同一个端口 4040 上运行它时,所有工作都很好

但是当我将 socket.io 的源代码放在其他端口上时,它在 ie6 和 ie7 和 8 上不起作用我看到每次获取新数据时页面都会刷新

很快,我有了一个基于 PHP 80 端口的网站,我基于 nodeJs 4040 端口进行了聊天

网站工作正常,聊天在端口 4040 上也能正常工作

这是socket.io的源码

在端口 4040 上工作正常:

<script src="/socket.io/socket.io.js"></script>

工作但在 ie 6 7 8 上有问题

<script src="http://mywebsite.com:4040/socket.io/socket.io.js"></script>

请不要将我的问题降级,因为我知道你们中的许多人都没有 100% 理解我的问题

【问题讨论】:

  • 哇,你已经知道了,仍然勇敢地发布这个问题......嗯;)那么你指的是哪个 other 端口,任何其他或只是一个特定的端口..

标签: php node.js socket.io


【解决方案1】:

我是 socket.io 的新手,到目前为止,我真的很喜欢我所看到的。

我只是想指出对@sdedelbrock 帖子的一个小修正。

您可能应该使用(如建议的那样):

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:4040');
</script>

因为这将假定服务器也在同一台机器上(使用localhost)。这就是我的一些开发人员所做的,当我部署他们的代码时,它根本不起作用(客户端页面找不到我们的服务器)。

我尝试过并且似乎效果很好的方法是让 XHR 自动解析 host 部分,只需提供端口号即可。

改用以下内容

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect(':4040');
</script>

因此,无论我部署到哪个环境(即:DEV、TEST、STAGE 或 PROD 等),它始终会解析正确的主机名客户端。这就是我们想要的。

【讨论】:

    【解决方案2】:

    您不应该那样更改端口,这是更改端口的最佳方式。

    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io.connect('http://localhost:4040');
    </script>
    

    这里我们调用相对于你的应用的JS文件,并在socket的初始化中指定端口。

    【讨论】:

    • 您可能已将轮询方式更改为 JSON-P 轮询,请查看link
    • 示例:` io.set('transports', [ 'websocket' , 'flashsocket' , 'htmlfile' , 'xhr-polling' , 'jsonp-polling' ]); });`
    【解决方案3】:

    这里是关于如何初始化客户端的 socket.io 文档的链接:https://socket.io/docs/v4/client-initialization/

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2014-10-06
      • 2012-08-27
      相关资源
      最近更新 更多