节点表示在socket.io连接后挂起的路由

时间:2017-09-14 22:47:31

标签: node.js express socket.io routes client

我正在构建一个使用快速路由和socket.io的节点js web应用程序来显示在线用户,聊天等。

如果我建立了socket.io连接并尝试导航到任何其他页面(通过快速路由),则客户端会挂起2分钟。

我尝试使用windows.location.href在客户端级重定向但没有成功。在客户端上运行调试时,在2分钟到期之前,路由不会被调用。因此,在调用路由之前,延迟要么发生在客户端上,要么发生在Node / express中的某个地方。

我在单独的socket.js文件中设置函数,以便将所有套接字调用保存在一个位置,不确定这是否导致挂起。

以下是我的设置。

app.js

var express = require('express');
var path = require('path');
var port = process.env.PORT || '3000';
var socketio = require('./src/socket');
var http = require('http');
var app = express();
var server = http.createServer(app);

var users  = require('./routes/users');
app.use('/users', users);

socketio(server);
module.exports = app;

users.js

var express = require('express');
var router  = express.Router();
var path = require('path');

router.get('/register', function(req, res) {
   res.render('register');
});

router.get('/login', function(req, res) {   
    res.render('login');
});

router.get('/profile', function(req, res) {        
    res.render('profile', {user:req.user, title:'Profile', layout:'profile'});  
});

module.exports = router;

socket.js

var socketio = require('socket.io');

module.exports = initSockets;

function initSockets(server) {
    var io = socketio.listen(server);

    io.on('connection', function (socket) {
        // connection code
    });
});

client.js

var home = 'http://localhost:3000';

$(document).ready(function(){   
    var socket = io(home);

    socket.on('auth', function(data){
        //  authentication code
    });
});

0 个答案:

没有答案