【问题标题】:How the socket.io client can detect my node server port?socket.io 客户端如何检测我的节点服务器端口?
【发布时间】:2018-04-14 09:14:21
【问题描述】:

我将 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 ?

谢谢

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

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

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

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

    干杯

    【讨论】:

    • 谢谢,所以socket io无法检测到带有ws(web socket)协议的保留端口?
    • 恐怕不行,这样比较安全!
    • 不,我的意思是可以:-)
    【解决方案2】:

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

    var socket = io();
    

    这告诉 socket.io 查看window.location.href 并连接到该主机和该端口(与网页来自相同的主机和端口)。 socket.io 已经这样实现了,这样当前的网页主机和端口就可以成为 socket.io 连接的默认位置。

    如果你编写你的 node.js 服务器既是为你的网页提供服务的 web 服务器又是你的 socket.io 服务器,那么这个默认值非常方便。它还避免了初始 socket.io 轮询步骤的 COR 问题,从而简化了 socket.io 服务器(因为它与不受 COR 约束的网页的主机和端口相同)。

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

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

    如果你愿意的话。

    【讨论】:

    • 谢谢,但是没有有效的 url 行的端口号结尾,这个问题对我来说很有趣 :-)
    • @Mohammad - 这回答了你的问题吗?我不知道你的评论是什么意思。
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 2014-10-13
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多