2016-09-28 3 views
0

Я только что добавил socket.io в свое приложение MEAN stack. Это не является последовательным в его связях. Это то, что я получаю, когда я запустить сервер и подключить через браузер:socket.io не последовательно подключается

GET /socket.io/?EIO=3&transport=polling&t=LTnYzIi 200 1.948 ms - 3956 
POST /socket.io/?EIO=3&transport=polling&t=LTnYzJL 404 1.617 ms - 66 
GET /socket.io/?EIO=3&transport=polling&t=LTnYzrU 200 1.612 ms - 3956 
POST /socket.io/?EIO=3&transport=polling&t=LTnYzs6 404 1.974 ms - 66 
GET /socket.io/?EIO=3&transport=polling&t=LTnY-jT 200 1.652 ms - 3956 
POST /socket.io/?EIO=3&transport=polling&t=LTnY-kE 404 0.975 ms - 66 

Однако, если остановить сервер и перезапустить его в тот момент, браузер делает запрос (в фоновом режиме), клиент подключает и он отлично работает. Мне действительно нужно подключаться каждый раз, когда есть право на общение? Пожалуйста, расскажите мне, что мне не хватает.

Вот мой package.json socket.io называют:

"socket.io": "^1.4.6" 

Мои app.js выглядит следующим образом:

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var expressValidator = require('express-validator') 
var mongodb = require('mongodb'); 
var mongoose = require('mongoose'); 
mongoose.connect("mongodb://localhost/newphase1"); 
var async = require('async'); 
var config = require('./config.js'); 
var routes = require('./routes/index'); 
var api = require('./routes/api'); 

var app = express(); 

var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.use(favicon(__dirname + '/public/favicon(4).png')); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, '/public'))); 

app.use(expressValidator({ 
    errorFormatter: function(param, msg, value){ 
    var namespace = param.split('.'), 
    root = namespace.shift(), 
    formParam = root; 

    while(namespace.length){ 
     formParam += '[' + namespace.shift() + ']'; 
    } 
    return { 
     param: formParam, 
     msg:msg, 
     value:value 
    }; 
    } 
})); 

var api = require('./routes/api')(app,express,io); 
app.use('/api', api); 


app.get('*',function(req,res){ 
    res.sendFile(__dirname + '/public/views/index.html'); 
}); 

io.on('connection', function(socket) { 
    console.log('client connected!'); 
}); 

http.listen(config.port,"127.0.0.1",function(err){ 
    if(err){ 
    console.log(err); 
    }else{ 
    console.log('listening on port 3000'); 
    } 
}) 

Мой файл socket.io скрипт (из CDN) в моем индексе. JS (угловой):

<script src="https://cdn.socket.io/socket.io-1.4.6.js"></script> 

Мой сервис для Socket.io:

.factory('socketio',function($rootScope){ 
    var socket = io.connect("http://localhost:3000"); 
    return { 
     on: function(eventName,callback){ 
      socket.on(eventName,function(){ 
       var args = arguments; 
       $rootScope.$apply(function(){ 
        callback.apply(socket,args); 
       }); 
      }); 
     }, 
     emit: function(eventName,data,callback){ 
      socket.emit(eventName,data,function(){ 
       var args = arguments; 
       $rootScope.apply(function(){ 
        if(callback){ 
         callback.apply(socket,args); 
        } 
       }); 
      }); 
     } 
    } 
}); 

Он подключается, но не последовательно. Есть идеи?

ответ

0

По какой-то причине

npm start 

дал мне выше непоследовательность в то время как

node app.js 

работает отлично.

Смежные вопросы