在其他端口上使用 socket.io

Lol*_*iss 1 php node.js socket.io

我正在尝试基于 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>
Run Code Online (Sandbox Code Playgroud)

工作但有问题 ie 6 7 8

<script src="http://mywebsite.com:4040/socket.io/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)

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

Jea*_*ach 5

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

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

你或许应该使用(如建议):

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

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

我已经尝试过并且似乎工作得很好,是让hostXHR 自动解析该部分,只提供端口号。

请改用以下内容

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect(':4040');
</script>
Run Code Online (Sandbox Code Playgroud)

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