【发布时间】:2018-03-13 11:38:23
【问题描述】:
我正在尝试在我的 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 文件中,我将“io”变量全部封装在一个函数中。
如果客户端发出 POST 请求,我无法收到消息。
你能帮我在这里找到问题吗?
【问题讨论】:
-
试试
io = require('socket.io').listen(server)?我在我的一些代码中发现了它并且它有效 -
它没有给出任何错误,但它也不起作用:(