io.on не работает при подключении с помощью socket.io в laravel 5.2

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

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>

person Amit kumar Sharma    schedule 08.07.2016    source источник
comment
вы можете изменить io.on на io.sockets.on ? и удалить повторяющийся код.   -  person elreeda    schedule 08.07.2016
comment
я уже пробовал это, но это не работает.   -  person Amit kumar Sharma    schedule 08.07.2016
comment
даже это тоже? ваш конфиг клиента?   -  person elreeda    schedule 08.07.2016
comment
оба не работают: - io.sockets.on, CreateServer   -  person Amit kumar Sharma    schedule 08.07.2016
comment
Вы можете опубликовать конфигурацию на стороне клиента?   -  person elreeda    schedule 08.07.2016
comment
пожалуйста, проверьте скрипт на стороне клиента   -  person Amit kumar Sharma    schedule 08.07.2016
comment
хм, в вашей консоли не отображается подключен новый клиент? просто поставь var socket = io.connect()   -  person elreeda    schedule 08.07.2016
comment
в серверном скрипте?   -  person Amit kumar Sharma    schedule 08.07.2016
comment
да в консоли сервера что-то показывает? var socket = io.connect() на стороне клиента   -  person elreeda    schedule 08.07.2016
comment
я получаю сообщение об ошибке - TypeError: Object #‹Server› не имеет метода 'connect'   -  person Amit kumar Sharma    schedule 08.07.2016
comment
в браузере правильно?   -  person elreeda    schedule 08.07.2016
comment
нет, на консоли. (мне просто нужно сообщение на консоли: - console.log(подключен новый клиент);   -  person Amit kumar Sharma    schedule 08.07.2016
comment
чувак какая консоль? консоль браузера или серверная консоль?   -  person elreeda    schedule 08.07.2016
comment
я думаю, что код на стороне клиента правильный, проблема на стороне сервера (io.on)   -  person Amit kumar Sharma    schedule 08.07.2016
comment
серверная консоль.   -  person Amit kumar Sharma    schedule 08.07.2016
comment
это io.sockets.on не io.on   -  person elreeda    schedule 08.07.2016
comment
io.sockets.on также не работает. Не могли бы вы опубликовать полностью отредактированный код на стороне сервера.   -  person Amit kumar Sharma    schedule 08.07.2016


Ответы (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");
});
person elreeda    schedule 08.07.2016
comment
Я получаю сообщение об ошибке var io = require('socket.io').listen(server); не могли бы вы сказать решение - person Jobin S; 14.01.2021