【问题标题】:How can I run Socket.io on node with express framework?如何使用 express 框架在节点上运行 Socket.io?
【发布时间】:2015-12-09 22:06:19
【问题描述】:

我正在尝试在 node.js 上使用 express 框架和 socket.io 运行 websocket。

这是我所做的

var env = require('./config');
var app = require('express').createServer();

var server = app.listen(env.socket.port, env.socket.host, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});


var io = require('socket.io')(app);

app.get('/', function (req, res) {
    res.send('Landed!');
});

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });

  socket.on('my other event', function (data) {
    console.log(data);
  });

});

但它不起作用!这是我得到的错误

C:\Program Files\nodejs>node socket.js
C:\Program Files\nodejs\socket.js:2
var app = require('express').createServer();
                             ^
TypeError: undefined is not a function
    at Object.<anonymous> (C:\Program Files\nodejs\socket.js:2:30)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

我做错了什么?

【问题讨论】:

    标签: javascript node.js sockets websocket socket.io


    【解决方案1】:

    require('express').createServer() 用于非常旧的 Express 版本(例如 2.x)。对于 Express 3.x/4.x,您应该使用 this example

    var env = require('./config');
    
    var app = require('express')();
    var server = require('http').Server(app);
    var io = require('socket.io')(server);
    
    server.listen(env.socket.port, env.socket.host, function () {
      var host = server.address().address;
      var port = server.address().port;
    
      console.log('Example app listening at http://%s:%s', host, port);
    });
    
    app.get('/', function (req, res) {
        res.send('Landed!');
    });
    
    io.on('connection', function (socket) {
      socket.emit('news', { hello: 'world' });
    
      socket.on('my other event', function (data) {
        console.log(data);
      });
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2021-03-21
      • 2015-12-15
      • 2017-08-10
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多