我尝试在我的Node Js服务器上使用socket.io发出一个事件并在客户端接收它,但我无法让它工作。
这是我的服务器代码:
// require our dependencies
var express = require('express');
var expressLayouts = require('express-ejs-layouts');
var bodyParser = require('body-parser');
var app = express();
var port = 3000;
var server = require("http").Server(app);
var io = require('socket.io')(server);
// use ejs and express layouts
app.set('view engine', 'ejs');
app.use(expressLayouts);
// use body parser
app.use(bodyParser.json({extended : true}));
// route our app
var router = require('./app/routes');
app.use('/', router);
// set static files (css and images, etc) location
app.use(express.static(__dirname + '/public'));
// start the server
app.listen(port, function() {
console.log('app started');
});
这是我的routes.js代码,应该发生魔法:
module.exports = function(io){
// require express
var express = require('express');
var path = require('path');
// create our router object
var router = express.Router();
// export our router
//module.exports = router;
router.post("/", function(request, response) {
console.log(request.body);
io.emit('getupdate',{hello:'world'});
});
// route for our homepage
router.get('/showevent', function(req, res) {
res.render('pages/showevent',{data:exportage});
});
return router;
}
虽然这是我的客户端脚本:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:3000');
socket.on('getupdate', function (data) {
console.log(data);
});
</script>
在routes.js文件中,获取&#34; io&#34;变量我把所有东西包裹在一个函数中。
我无法在客户端发出POST请求时收到消息。
你能帮我在这里找到问题吗?
答案 0 :(得分:0)
试试这个:
// require our dependencies
var express = require('express');
var expressLayouts = require('express-ejs-layouts');
var bodyParser = require('body-parser');
var app = express();
var port = 3000;
var server = app.listen(port);
var io = require('socket.io').listen(server);
我不确定您是否已在自己的代码中更新此内容,但此代码段应将io
传递给路由器:
// route our app
var router = require('./app/routes')(io);
app.use('/', router);