如何从v0.9.x移动到Socket.io v1.x

时间:2015-06-29 09:24:07

标签: node.js socket.io

我正在开发一个使用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的经验有限,所以如果问题太宽,我会道歉。

1 个答案:

答案 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>