我尝试用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请求
您正在收听。新消息
但正在发送。应用程序。事件。消息已发布
。
更改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