2015-05-29 67 views
0

这是我的应用程序结构移动socket.io到控制器

controller 
    routes.js 
public 
    jquery.js 
socket.io.js 
    app.js 
index.html 

的app.js文件包含插座程序时用户连接,其发射的一些消息。现在问题是我如何从路由发出消息。

我的代码的NodeJS低于:

这是我的app.js文件代码:

var express=require('express'); 
var app=express(); 
var server=require('http').createServer(app); 
var io=require('socket.io').listen(server); 
app.use('/', express.static(__dirname + '/')); 


io.sockets.on('connection',function(socket){ 
socket.emit('message',{msg:'hai'}); 
}); 

app.use('/cal',require('./controllers/route')); 

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

server.listen(3000); 

这是我的route.js代码:

var express=require('express'); 
var route=express.Router(); 

route.get('/',function(req,res){ 

    //socket.emit('message',{msg:'hai'}); 
}); 

module.exports=route; 

这是我的索引。 html文件代码:

<htmL> 
<head> 
<title>Chat with socket.io and node.js</title> 
</head> 
<body> 
<script src="./public/jquery.min.js"></script> 
<script src="./public/socket.io.js"></script> 
<script> 

jQuery(function($){ 
var socket = io.connect(); 

socket.on('message',function(data){ 
alert(data.msg); 
}); 

}); 

</script> 
</body> 
</html> 

谢谢您。

回答

0

路由与套接字无关。你必须在套接字上听,而不是在路线上。这里是使用Socket.IO和Express的文档(http://socket.io/docs/)的标准:

// server - app.js 
var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

server.listen(80); 

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

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


// client - index.js 
<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
     console.log(data); 
     socket.emit('my other event', { my: 'data' }); 
    }); 
</script>