我正在开发一个使用socket.io在多个客户端之间建立Web RTC连接的应用程序。该应用程序是由另一个开发人员开发的,我现在正在接受它。我想要做的一件事是从当前使用的socket.io v0.9.16转到最新版本v1.3.5。
我已经查看了从v0.9迁移到v1.0的page并尝试更改了一些内容,但它似乎对我不起作用。我在chrome控制台中收到以下错误:
Failed to load resource: net::ERR_CONNECTION_REFUSED https://143.167.117.93:3000/socket.io/1/?t=1435567474680
表示socket.io初始化存在问题。下面的代码显示了当前的完成方式,适用于socket.io v0.9.16。
var protocol = require('https');
var portNo = 3000;
var app = protocol.createServer(options, function (req, res) {
/**
* server serves pages otherwise 404.html
*/
file.serve(req, res, function (err, result) {
if (err) {
console.error('Error serving %s - %s', req.url, err.message);
if (err.status === 404 || err.status === 500) {
file.serveFile(util.format('/%d.html', err.status), err.status, {}, req, res);
} else {
res.writeHead(err.status, err.headers);
res.end();
}
} else {
console.log('serving %s ', req.url);
}
});
}).listen(portNo);
var io = require('socket.io').listen(app, {
log: false,
origins: '*:*'
});
io.set('transports', [
'websocket',
'xhr-polling',
'jsonp-polling'
]);
io.sockets.on('connection', function (socket) {
//Do something
});
如果您需要更多信息来完成此问题,请告知我们。我使用socket.io和node.js的经验有限,所以如果问题太宽,我会道歉。
答案 0 :(得分:0)
看起来您没有正确设置socket.io,并且您仍在使用socket.io 0.9版本中的一些选项。尝试使用socket.io migration tutorial创建一个基本示例,下面是使用http
node.js库和socket.io 1.x
库的示例。
app.js
档案:
var protocol = require('http').createServer(handler);
var file = require('fs');
var io = require('socket.io')(protocol);
var portNo = 4040;
protocol.listen(portNo, function() {
console.log('server up and running');
});
function handler(req, res) {
file.readFile(__dirname + '/index.html', function(err, data) {
if (err) {
res.writeHead(500);
return res.send('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.on('connection', function(socket) {
socket.emit('message', 'you just connected dude!');
});
index.html
档案:
<!doctype html>
<html>
<head>
</head>
<body>
<h1>Hello World</h1>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.5/socket.io.js">
</script>
<script>
var socket = io.connect();
socket.on('message', function(message) {
alert(message);
});
</script>
</body>
</html>