我正在使用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?
谢谢
答案 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");
如果你愿意的话。