当前位置: 首页 > 知识库问答 >
问题:

带有套接字io和redis的laravel echo服务器

雍宇定
2023-03-14

我尝试用laravel echo服务器和套接字创建实时应用程序。io,但客户端未成为消息

这是我的代码:

.环境

BROADCAST_DRIVER=redis
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=redis

配置/queue.php

 'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => 'default',
        'retry_after' => 90,
 ],

config/database.php

'redis' => [

    'retry_after' => 90,
    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
    ],

],

路线/频道。php

Broadcast::channel('messages', function() {
    return true;
}); 

src/echo。js

import Echo from "laravel-echo"

window.Echo = new Echo({
   broadcaster: 'socket.io',
   host:'http://localhost:6001'
});

window.Echo.channel('messages')
  .listen('.newMessage', (message) => {
    debugger;
});

活动/MessagePosted.php

<?php

 namespace App\Events;

 use Illuminate\Broadcasting\Channel;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Foundation\Events\Dispatchable;
 use Illuminate\Broadcasting\InteractsWithSockets;
 use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class MessagePosted implements ShouldBroadcast {

 use Dispatchable, InteractsWithSockets, SerializesModels;

protected $message;

public function __construct($message)
{
    $this->message = $message;
}

public function broadcastWith()
{
    return [
        'message' => $this->message,
    ];
}

public function broadcastAs()
{
    return 'newMessage';
}

public function broadcastOn()
{
    return new Channel('messages');
}
}

消息控制器。php

public function post(Request $request)
{
    event(new MessagePosted($request->get('message')));
} 

在Redis cli PING命令return PONG中安装了Redis服务器。我使用php artisan queue:work redis,但从客户端发送消息后,队列中并没有显示任何内容。。。客户端连接到laravel echo服务器,其返回:[14:04:17]-C3c8UUnTn9dvOPc9AAAA加入通道:消息。并处理POST请求

共有1个答案

计均
2023-03-14

您正在收听。新消息但正在发送。应用程序。事件。消息已发布

更改JS中的listen函数param:

window.Echo.channel('messages')
  .listen('.App.Events.MessagePosted', (message) => {
  debugger;
});
 类似资料:
  • 我正在开发一个在线的,基于文本的RPG(Github);目前我有一个PHP后端,它将会话数据存储在redis服务器中。对于需要实时通信的所有内容(聊天,消息传递和连接用户列表),我使用Node.js和 socket.io 用于websocket。 我目前在我的网络索克服务器上有3个命名空间: 消息服务器 在线服务器 聊天服务器 我已经让它工作了,但恐怕大部分是由“黑客”制作的。现在,我无法向特定的

  • 我正在使用flutter socket io与运行Node/Express的服务器通信。 服务器代码: 我的扑动代码: 当我尝试连接时,我会得到一个超时错误,该错误在OnConnectRetror中捕获。 节点服务器正在运行debian,我已经检查了防火墙状态: 当我通过chrome打开url时,我得到的是“你好”信息。当我尝试netcat“NC-VZ MyServerIP8080时,我已经成功地

  • 我一直在关注这个http://channels.readthedocs.io/en/latest/getting-started.html 我目前的设置(在添加频道之前)是nginx、uwsgi、django。 在我的本地,我运行所有这一切在一个流浪者框转发端口5000 Django服务器当前运行在0.0.0.0:5000 我的nginx配置监听8000和服务静态文件 它还具有: 在遵循教程的过程

  • 如果有人对WebSocket/Socket IO有经验,希望你能给我指出正确的方向。 我制作了一个不和谐的克隆,我正试图优化它以更好地扩展。现在,当一个用户发送一条消息时,我向数据库查询该服务器的所有用户部分,并向他们的特定套接字发送一条消息。这显然不能很好地扩展,因为每条消息都需要在客户机列表中进行昂贵的查询和查找 然而,为每台服务器使用房间将消除我查询数据库的需要。我知道我可以在套接字服务器首

  • 我想找个人来澄清一个我相信我有的误解。我在读Java上的套接字编程,并不真正理解事情的实际流程是什么。以下是我对以下场景的两种可能的解释。 创建套接字实例 null 服务器接受客户端之后的连接会是这样的吗?(客户端与服务器创建的套接字通信,而不是与服务器套接字通信) 或者图表会像这样吗?(客户端通过ServerSocket与服务器保持通信。服务器通过接受连接时创建的套接字进行通信。)

  • 线程“main”java.net.ConnectException:连接超时:在java.net.dualStackplainsockeTimpl.Connect0(本机方法)在java.net.dualStackplainsockeTimpl.socketConnect(DualStackplainsockeTimpl.java:69)在java.net.abstractplainsockeTi