socket.io客户端如何检测我的节点服务器端口?

时间:2018-04-14 09:14:22

标签: javascript node.js socket.io

我正在使用socket.io来创建一个简单的聊天脚本。 我创建了一个简单的服务器,没有问题。 但我对客户端脚本和该机制有疑问!

例如,我在客户端文件上有这段代码:

<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
      $(function () {
        var socket = io();
        $('form').submit(function(){
          socket.emit('chat message', $('#m').val());
          $('#m').val('');
          return false;
        });
        socket.on('chat message', function(msg){
          $('#messages').append($('<li>').text(msg));
          window.scrollTo(0, document.body.scrollHeight);
        });
      });
    </script>

那么,“https://cdn.socket.io/socket.io-1.2.0.js”如何检测我的“server.js”文件激活了这台机器上的http端口,以便在我执行的节点服务器上发送请求和发出?

这只是一个客户端脚本,它如何检测服务器端脚本并找到服务器端口? 或者可能只是在我的脚本上设置默认端口号,如3000?

谢谢

2 个答案:

答案 0 :(得分:1)

它的工作非常标准。 默认值连接到正在提供网页的同一主机/端口。 您的网络服务器端口信息在窗口范围内可用,因此这里没有黑魔法。此外,WS连接完成ws://协议。

如果要更改套接字服务器的默认端点,可以将字符串作为参数传递到io() init

var endpoint = 'http://socket.myapp.com';
var socket = io(endpoint);
socket.on(...)

干杯

答案 1 :(得分:0)

在socket.io代码中使用它时:

var socket = io();

告诉socket.io查看window.location.href并连接到该主机和该端口(与该网页相同的主机和端口)。 socket.io以这种方式实现它,以便当前的网页主机和端口可以作为socket.io连接的默认位置。

如果您将node.js服务器编写为服务于您的网页的Web服务器并成为您的socket.io服务器,则此默认设置非常方便。它还避免了初始socket.io轮询步骤的CORs问题,这简化了socket.io服务器(因为它与不受CORs影响的网页具有相同的主机和端口)。

您不必在与网页来自的Web服务器相同的主机和端口上使用socket.io。您可以指定URL,例如:

var socket = io("http://somedomain.com:5000");

如果你愿意的话。