Laravel echo-server
目次
Laravel-echo-serverとは?
LaravelからWebSocketを利用する為のライブラリ
WebSocketを利用するとhttpリクエストを利用せずに、常時双方向通信が可能になる。
※Nodejs with socket.ioで作られたLaravel用 WebScoketサーバー
インストール
npm install -g laravel-echo-server
yarn install -g laravel-echo-server
初期化
laravel-echo-server init
対話形式による設定
? Do you want to run this server in development mode? Yes
? Which port would you like to serve from? 6001
? Which database would you like to use to store presence channel members? redis
? Enter the host of your Laravel authentication server. http://localhost/
? Will you be serving on http or https? http
? Enter the path to your SSL cert file. /etc/letsencrypt/live/localhost/fullchain.pem
? Enter the path to your SSL key file. /etc/letsencrypt/live/localhost/privkey.pem
? Do you want to generate a client ID/Key for HTTP API? No
? Do you want to setup cross domain access to the API? No
? What do you want this config to be saved as? laravel-echo-server.json
→laravel-echo-server.jsonが作成される
laravel-echo-server.json
{
”authHost”: “http://localhost“,
”authEndpoint”: “/broadcasting/auth”,
”clients”: [],
”database”: “redis“,
”databaseConfig”: {
”redis”: {
追記(dockerでredisコンテナ運用前提)
”port”: “6379“,
”host”: “redis-server“,
”options.db”: 2
},
”sqlite”: {
”databasePath”: “/database/laravel-echo-server.sqlite”
}
},
”devMode”: true,
”host”: null,
”port”: “6001“,
”protocol”: “http“,
”socketio”: {},
”secureOptions”: 67108864,
”sslCertPath”: “”,
”sslKeyPath”: “”,
”sslCertChainPath”: “”,
”sslPassphrase”: “”,
”subscribers”: {
”http”: true,
”redis”: true
},
”apiOriginAllow”: {
”allowCors”: false,
”allowOrigin”: “”,
”allowMethods”: “”,
”allowHeaders”: “”
}
}
起動
laravel-echo-server start
Redis
Docker利用時
※docker-compose.yml
version: “3”
services:
省略
redis:
container_name: redis-server
image: redis:5.0-alpine
volumes:
- redis-store:/data
volumes:
redis-store:
インストールする場合
composer require predis/predis
.env
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
LaravelからのBroadcast
config/app.php
App\Providers\BroadcastServiceProvider::class,
publicなEvent
class PublicEvent
{
〜
public function __construct(){}
public function broadcastOn()
{
return new Channel(‘public-event’);
}
public function broadcastWith()
{
return [
’message’ => ‘PUBLIC’,
];
}
}
ルーティング
Route::get(‘/publicevent’, function(){
broadcast(new \App\Events\PublicEvent);
return ‘public’;
});
Laravel-echo
Laravel-echo-server用クライアントライブラリ
インストール
npm install --save laravel-echo socket.io-client
関連
Socket.IO
WebSocketを含むリアルタイムWeb技術を扱う為のライブラリ
Websocket
「Websocket」参照