Socket.io和express.js,如何让它工作?

时间:2015-05-05 13:14:44

标签: javascript node.js express socket.io

我在网上看到了很多变化,但似乎没有什么对我有用。如何获得socket.io 1.3.5并表达4.12.2工作?

这就是我现在所拥有的。我得到的错误是404,因为服务器无法提供/socket.io/socket.io.js

app.js:

var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);

io.on('connection', function (socket) {
   console.log('connected');
});

index.hjs:

<script src="/socket.io/socket.io.js"></script>
        <script>
          var socket = io.connect();
          socket.on('news', function (data) {
            console.log(data);
          });
</script>

注意:我也尝试过使用cdn <script src="https://cdn.socket.io/socket.io-1.3.5.js"></script>,但没有成功。

1 个答案:

答案 0 :(得分:4)

要使用带有express的socket.io,我们需要对默认没收事件进行一些更改。

  

app.js:

var app = require('express')();

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

module.exports = app;
  

io.js

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

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

module.exports = io;
  

仓/ WWW:

var app = require('../app');
var io = require('../io');
var server = require('http').Server(app);

io.attach(server);
server.listen(8080);

现在对于索引模板,你应该使用如下

<script src="/socket.io/socket.io.js"></script>
<script>
$(document).ready(function(){
      var socket = io();
      socket.on('news', function (data) {
        console.log(data);
      });

      });
});
</script>

它是一个有效的代码..

由于