2016-07-08 1 views
2

У меня проблема с проблемой (я действительно разочарован), а я подключаю функцию io.on. Я использую express, ioredis и socket.io. redis работает нормально, но socket.io не работает. это не работает.io.on не работает при подключении через socket.io в laravel 5.2

var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 
var Redis = require('ioredis'); 
var redis = new Redis(); 

//port connection 
server.listen(3000); 
console.log('server listening 3000'); 

//redis sub (working fine) 
redis.subscribe('test-channel', function() { 
    console.log('Redis: test-channel subscribed'); 
}); 

//this code is not working (stop execution) 
io.on('connection', function(socket){ 
    console.log("new client connected"); 
}); 


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

    redis.subscribe('message'); 
    console.log("redis start"); 

    //send message to frontend 
    redis.on("message", function(channel, message) { 
     console.log("mew message in queue "+ message + "channel"); 
     socket.emit(channel, message); 
    }); 
    //close socket 
    socket.on('disconnect', function() { 
     redis.quit(); 
     console.log('redis disconnected!'); 
    }); 

}); 

стороне клиента

 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
    <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> 
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 
    <script src="https://cdn.socket.io/socket.io-1.3.4.js"></script> 

    <script> 
     var socket = io.connect('http://localhost:3000'); 
     socket.on('message', function (data) { 
      $(".progress-bar").css('width',+data+'%'); 
      alert('connection established'); 
      $("#messages").append("<p>"+data+"</p>"); 
     }); 
    </script> 
+0

вы можете изменить '' io.on' в io.sockets.on'? и удалите дублированный код. – Gintoki

+0

Я уже пробовал это, но это не работает. –

+0

даже это тоже? ваш клиентский конфиг? – Gintoki

ответ

1

стороне сервера

var express = require('express'); 
var app = express(); 
var server = require('http').createServer(app); 
var io = require('socket.io').listen(server); // it was require('socket.io')(server); 

server.listen(3000); 

стороне клиента

io.sockets.on('connection', function(socket){ 
    console.log("new client connected"); 
}); 
Смежные вопросы