1
我有一個使用socket.io的遊戲。當通過我自己的計算機連接時,在本地和通過我的IP地址(不是局域網,而是真正的IP)播放時,它工作正常。通過IP地址不能正常工作的Socket.io連接
但是,當我給我的IP和端口給別人時,索引HTML頁面加載得很好,但socket.io'連接'不起作用。
它在socket.io.js的第1659行顯示錯誤。
Socket.prototype.handshake = function (fn) {
var self = this
, options = this.options;
function complete (data) {
if (data instanceof Error) {
self.connecting = false;
self.onError(data.message);
} else {
fn.apply(null, data.split(':'));
}
};
var url = [
'http' + (options.secure ? 's' : '') + ':/'
, options.host + ':' + options.port
, options.resource
, io.protocol
, io.util.query(this.options.query, 't=' + +new Date)
].join('/');
if (this.isXDomain() && !io.util.ua.hasCORS) {
var insertAt = document.getElementsByTagName('script')[0]
, script = document.createElement('script');
script.src = url + '&jsonp=' + io.j.length;
insertAt.parentNode.insertBefore(script, insertAt);
io.j.push(function (data) {
complete(data);
script.parentNode.removeChild(script);
});
} else {
var xhr = io.util.request();
xhr.open('GET', url, true);
if (this.isXDomain()) {
xhr.withCredentials = true;
}
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
xhr.onreadystatechange = empty;
if (xhr.status == 200) {
complete(xhr.responseText);
} else if (xhr.status == 403) {
self.onError(xhr.responseText);
} else {
self.connecting = false;
!self.reconnecting && self.onError(xhr.responseText);
}
}
};
xhr.send(null); //This is the line 1659.
}
};
注意:所有文件都在C:驅動器的文件夾內,而不是在用戶的下面。
問題與安全訪問有關嗎?或者是其他東西?
代碼服務器+客戶端
//Server
express = require('express');
http = require('http');
app = express();
server = http.createServer(app);
io = require('socket.io').listen(server);
app.use(express.static(__dirname + '/public'));
server.listen(3000);
app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); });
//Client
<script src="/socket.io/socket.io.js"></script>
<script>var socket = io.connect('http://192.168.1.161:3000');</script>
路由器配置 http://puu.sh/3ACGz.png
我需要1個端口的服務器和1個端口的socket.io?現在,我的服務器在端口3000上,我使用var socket = io.connect('http://192.168.1.161:3000'); – PerfectAffix
請分享您在初始化socket.io和http服務器的node.js中的代碼。 – moka
在問題部分添加。 – PerfectAffix