带有Express Application Generator的Socket.io

时间:2015-08-03 23:36:39

标签: node.js express socket.io

我一直在挖掘这个问题的简单解决方案,我找不到一个。在使用Express的应用程序生成器后,如何开始使用Socket.io。例如,如果我创建一个新的应用程序 express myappnpm install --save socket.io如何在index.jade文件中使用?

我的index.jade文件现在是纯HTML,看起来像这样

html.
<head>
    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io();

      socket.on('message', function(msg){
          console.log('you got a message');
        });
    </script>
</head>
<body>
    <canvas id="mycanvas" width="768" height="720"></canvas>
</body>

我的routes/index.js文件看起来像

var express = require('express');
var router = express.Router();
var io = require('socket.io')();

router.get('/', function(req, res, next) {
    io.emit('text', { for: 'everyone' });  
    res.render('index', { title: 'Express' });
});

module.exports = router;

但是当我去我的应用程序的主页时没有任何反应。我跟着this SO回答,但我的应用程序只触发“用户连接”消息。我的io.emit永远不会在我的index.js文件中触发。

1 个答案:

答案 0 :(得分:1)

将套接字代码写在REST api之外并尝试:

io.on( "connection", function( socket )
{
    console.log( "A user connected" );
    socket.emit('text', { for: 'everyone' });
});