我正在将socket.io用于需要我将实时数据流式传输到浏览器的项目。现在服务器部分没问题,但是在socket.io客户端io.connect()调用上,我过去遇到了一些问题,没有适当的解决方案。我已经尝试过通常的嫌疑人,但我没有通过。
我的客户电话看起来像这样:
var socket = io.connect('http://10.95.xx.xx:5002');
哪里10.95。 ..是LAN上服务器的IP地址。使用此IP,我可以从LAN内部,LAN中的任何计算机上访问服务器,但这不适用于LAN外部。问题很可能是,这个IP仅用于LAN,而不是公共IP。根据大学的网络设置,公共IP为128.95 ......如果我将其更改为此IP,则可以从外部访问,但不能从内部访问。
解决此问题的一种方法是,我尝试读取客户端的IP地址,并根据该决定参数IP。但这并不强烈。另外,我尝试使用io.connect("/")
。在以前的情况下,它对我有用,但这次没有。此外,空呼叫无效io.connect()
无法正常工作。
答案 0 :(得分:1)
正如你所说,你可以使用客户端的IP地址,这对我来说总是有用的:
var port = window.location.port,
host = window.location.hostname,
protocol = window.location.protocol,
path = '/',
url,
options = { };
if( protocol.indexOf( 'https' ) > -1 ) {
protocol = 'wss:';
} else {
protocol = 'ws:'
}
url = protocol + "//" + host + ":" + port + path;
options = { };
/*
// If you wanted to add an access token, "Session" is where I store this
if( Session.token ) {
options.query = 'access_token=' + Session.token;
}
*/
socket = io( url, options );