2015-05-05 93 views
2

我在網上看到很多變化,但似乎沒有任何工作適合我。如何獲得socket.io 1.3.5和express 4.12.2的工作?Socket.io和express.js,如何使它工作?

這就是我現在所擁有的。我得到的錯誤是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>,但沒有成功。

回答

4

要用express來使用socket.io,我們需要默認沒收expesss中的一些更改。

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> 

其工作代碼..

感謝

+0

謝謝!似乎我所缺少的是io.attach(服務器)。 – DeepSpace