我正在使用pm2(版本3.4.1)来管理Laravel Echo Websocket服务器。它运行完美,但是我试图让它在计算机重启(运行Ubuntu 16.04)后自动启动。为此,我遵循以下说明:
$ pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 startup systemd -u kramer65 --hp /home/kramer65
$ sudo env PATH=$PATH:/usr/bin /usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 startup systemd -u kramer65 --hp /home/kramer65
[sudo] password for kramer65:
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=kramer65
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/kramer65/.pm2
PIDFile=/home/kramer65/.pm2/pm2.pid
ExecStart=/usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 reload …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用pusher设置Laravel Echo,以实现实时通知.
首先,我安装了Laravel Echo和Pusher:
npm install --save laravel-echo pusher-js
Run Code Online (Sandbox Code Playgroud)
在此之后, bootstrap.js 我已取消注释代码(如指南所说):
import Echo from "laravel-echo"
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'my_key',
encrypted: true
});
Echo.channel('orders')
.listen('TestEvent', (e) => {
console.log('pippo');
});
Run Code Online (Sandbox Code Playgroud)
我已经运行了gulp,现在当我访问该页面时,我收到此错误:
bootstrap.js?5e63:50 Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_0_laravel_echo___default.a.channel is not a function
Run Code Online (Sandbox Code Playgroud) 服务器端是php laravel echo websocket,我正在尝试通过Angular 4连接.我尝试使用ng2-socket-io - npm和laravel-echo - npm,但没有一个成功.如果有人知道我可以使用它的任何文档或教程,请帮助
我想让我的应用程序应用程序连接到私人频道上的推送器.
但是我收到以下错误:
pusher.js?b3eb:593 POST http:// localhost:8000/broadcasting/auth 404(Not Found)
可能是错误的原因以及如何解决它.
无论出于何种原因,我无法从laravel echo接收客户端的任何数据.我正在使用laravel-echo-server(socket.io),redis广播公司和redis队列.据我所知,它们都是功能性的.我会带你了解我如何进行测试.首先,我创建了一个UserCreated事件:
class UserCreated implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;
public function __construct($user)
{
$this->user = $user;
}
public function broadcastOn()
{
return new Channel('user-created');
}
public function broadcastAs()
{
return 'user.created';
}
}
Run Code Online (Sandbox Code Playgroud)
然后,为了测试此事件,我创建了一个CreateUser命令:
class CreateUser extends Command
{
protected $signature = 'create:user {username}';
protected $description = 'Create a new user!';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$user = \Chatter\User::create([
'name' => $this->argument('username'),
'email' => uniqid() . '@gmail.com',
'password' => bcrypt('secret')
]); …Run Code Online (Sandbox Code Playgroud) 目前我在创建和更新模型后使用观察者来处理一些东西.
我想通过使用laravel-echo实时更新我的应用程序,但我无法找到关于laravel-echo与观察者(而不是事件)结合使用的文档.
您可以将事件及其广播功能与其各自的侦听器结合使用以获得此功能,但我更喜欢更清晰的观察员代码(更少"魔术").
看一下laravel框架的代码,我可以看到observable仍然使用雄辩的事件,所以我怀疑有一种方法来广播这些.
所以我的问题是:有没有办法使用laravel-echo广播有说服力的事件而不创建单独的事件或在每个事件上手动添加广播语句?
我有socket.io作为一个广播员与laravel回声的问题.
我试过了什么:
php artisan cache:clear
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)
我可以看到用户在日志中连接:
0|Socket-Connection | [11:17:00 AM] - ********** joined channel: test-channel
0|Socket-Connection | [11:17:01 AM] - ********** authenticated for: private-user.1
0|Socket-Connection | [11:17:01 AM] - ********** joined channel: private-user.1
Run Code Online (Sandbox Code Playgroud)
我的队列正在运行,正在正确记录所有事件.
我可以在redis控制台中完美地看到redis我的事件和数据库通知.
但是没有广播事件,我没有在laravel-echo-server控制台中看到它们.一切都在我的本地主机上工作,但不是在制作中我失去了理智.
这是我的laravel echo JS:
if (typeof io !== 'undefined') {
console.log(window.location.origin);
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.origin + ':6001',
auth: {
headers: {
Authorization: 'Bearer ' + bearerToken,
},
}
});
window.Echo.private('user.' + user_id).notification((notification) => {
console.log(notification);
});
}
Run Code Online (Sandbox Code Playgroud)
在我的用户模型上,我定义了这个: …
我最近钻研了Laravel 5.3的Laravel-Echo和Pusher组合.我已经成功建立了公共频道,然后转向私人频道.我在Laravel从/ broadcast/auth路由返回403时遇到了麻烦,无论我做什么尝试授权操作(包括使用简单的返回true语句).谁能告诉我我做错了什么?
应用/供应商/ BroadcastServiceProvider.php:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Broadcast::routes();
/*
* Authenticate the user's personal channel...
*/
Broadcast::channel('App.User.*', function ($user, $userId) {
return true;
});
}
}
resources/assets/js/booststrap.js:
import Echo from "laravel-echo"
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'My-Key-Here'
});
window.Echo.private('App.User.1')
.notification((notification) => {
console.log(notification.type);
});
Run Code Online (Sandbox Code Playgroud)
我可以在我的Pusher调试控制台中看到事件和它的有效负载,一旦它到达auth路由就会失败.
我正在使用 laravel-echo-server 运行 Laravel Echo 来广播事件。
我有一个用户计数器频道,显示应用程序上的所有用户。为此,我使用了在线状态频道。这适用于登录用户,但客人永远无法连接。
我在 BroadcastServiceProvider 中设置了以下内容:
Broadcast::channel('global', function () {
return ['name' => 'guest'];
});
据我所知,应该允许每个人作为“客人”进入。我猜在此之前正在检查一些中间件或身份验证,我需要为此通道禁用。
非常感谢让所有客户加入此在线渠道的任何帮助!
我可以使用HTTPS设置在我的本地环境中运行laravel-echo-server.但是,似乎我的生产服务器(基于Forge)存在问题:
Client cannot be authenticated, got HTTP status 405
Run Code Online (Sandbox Code Playgroud)
我能够通过HTTPS在本地测试私有通道,它工作正常,所以看起来它不是一个配置问题.
我应该提一下,我正在使用Laravel Passport,并且导致此错误的请求被抛出在常规auth中间件之外的页面上.
只是为了确保它不是我的身份验证方法,我在通道配置中返回'true':
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Broadcast::channel('channelReceiveLiveData.{id}', function ($user, $id) {
return true;
});
Broadcast::channel('channelReceiveTestState.{id}', function ($id) {
return true;
});
Run Code Online (Sandbox Code Playgroud)
以下是侦听私有通道的echo侦听器的版本:
Echo.private('channelReceiveLiveData.' + this.$route.params.testID)
.listen('liveDataTrigger', (e) => {
if (!that.state.hasPulledInitialData) {
console.log('Receiving data before initial pull done');
}
Run Code Online (Sandbox Code Playgroud)
我的laravel-echo-server.json文件:
"authHost": "https://app.test.com",
"authEndpoint": "/broadcasting/auth",
"clients": [
{
"appId": "....",
"key": "...."
}
],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": { …Run Code Online (Sandbox Code Playgroud) laravel-echo ×10
laravel ×8
php ×4
socket.io ×3
javascript ×2
laravel-5.3 ×2
pusher ×2
redis ×2
angular ×1
laravel-5 ×1
laravel-5.4 ×1
observers ×1
pm2 ×1
typescript ×1
vuejs2 ×1