【问题标题】:io.on is not working while making connection using socket.io in laravel 5.2在 laravel 5.2 中使用 socket.io 建立连接时 io.on 不工作
【发布时间】:2016-11-10 23:35:42
【问题描述】:

我在连接 io.on 函数时遇到问题(我真的很沮丧)。我正在使用 express、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>

【问题讨论】:

  • 你能把io.on改成io.sockets.on吗?并删除重复的代码。
  • 我已经试过了,但这不起作用。
  • 即使如此?你的客户端配置?
  • 两者都不工作:- io.sockets.on, CreateServer
  • 你能发布你的客户端配置吗?

标签: javascript sockets laravel-5 socket.io-redis ioredis


【解决方案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");
});

【讨论】:

  • 我收到一个错误消息 var io = require('socket.io').listen(server);你能说一个解决方案吗
【解决方案2】:

const { 服务器 } = require("socket.io") const io = 新服务器(服务器)

【讨论】:

  • 嗨@AnujSaklani,如果你可以编辑你的帖子,以便代码在sn-p中(选择代码和ctrl + k)如果你能添加一些解释,你会很棒,这将大大提高您答案的可读性和质量。
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2021-07-28
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多