我想在我的应用程序中使用soket.io
,并在 mvc Express 应用程序中使用 module.export
。
可能服务器代码为:
var express = require('express')
, app = express()
, router = express.Router();
var http= require('http').Server(app);
var io=require('socket.io')(http);
app.io = require('socket.io')();
...
//api
app.use(require('./controllers'));
app.listen(config.port, function() {
console.log('Listening on port ' + config.port)})
和我的控制器/索引:
var express = require('express')
, router = express.Router();
..
router.get('/', function(req, res) {
res.send('hi')
});
router.use('/chat', require('./chat'));
module.exports = router
</code>
我的聊天.js文件是:
var app = require('express')
, chat = app.Router();
var http= require('http').Server(app);
var io = require('socket.io')(http);
var path = require("path");
chat
.get('/', function(req, res) {
let reqPath = path.join(__dirname, '../');
// res;
io.on('connection', function(socket){
console.log('a user connected');
})
res.sendFile(reqPath +'/views/index.html'); })
io.on('connection', function(socket){
console.log('a user connected');
});
代码发送我的 html 文件并显示我的结果。但不在我的控制台中显示console.log('a user connected');
。
<code><!DOCTYPE html>
<html>
<head>
<title>Hello world</title>
</head>
<script src = "/socket.io/socket.io.js"></script>
<script>
var socket = io();
function sendMessage() {
var msg = document.getElementById('message').value;
if(msg) {
socket.emit('msg',msg);
}
}
socket.on('msg', function(data) {
document.getElementById('message-container').innerHTML += '<div>' + data.ChatMessage + '</div>'
})
</script>
<body>
<div id = "error-container"></div>
<input type = "text" id = "message">
<button type = "button" name = "button" onclick = "sendMessage()">Send</button>
<div id = "message-container"></div>
</body>
</html></code>