laravelイベントを呼び出してsocket.ioに変数を送信することはできますか?socket.io内のlaravelイベントを呼び出す
これは私がソケットIDを送信ソケットに実装可能であるかどうかを知りたいラインです:
socket.emit('App\\Events\\ClosePlaySession', socket.id);
Socket.js
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server, {'pingInterval': 2000, 'pingTimeout': 5000});
var Redis = require('ioredis');
var redis = new Redis();
io.set('heartbeat timeout', 10);
io.set('heartbeat interval', 4);
server.listen(3000);
io.on('connection', function (socket) {
console.log("new client connected " + socket.id);
socket.on('disconnect', function() {
socket.emit('App\\Events\\ClosePlaySession', socket.id); // This is possible?
console.log('client disconnected');
});
});
イベントClosePlaySession.php
<?php
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
// Repositories
use wtv\Repositories\PlaySessionRepository;
class ClosePlaySession extends Event implements ShouldBroadcast
{
use SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($socket_id)
{
$playSessionRepository = new PlaySessionRepository;
$playSessionRepository->closeSession($socket_id);
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return ['closePlaySession'];
}
}
または、データベース内のレコードを更新するためにソケットIDを送信する最も良い方法は何ですか。あなたが何をしたいの私自身の完全に機能する例のこの2つのリポジトリに見つけることができます
おかげ
ユーザーがサイトから出て、ソケットIDを取得してデータベース内のレコードを更新するのを知る必要があるのは非常に簡単ですが、その方法はわかりません。 : 'C、socket.jsファイル内でオブジェクトリクエストを試行していますが、動作しません。 –
あなたがそれらの例を確認したら、あなたはあなたがしたいと思うことが分かるでしょう。とにかく、私はスニペットXDで別の答えを発表します! – bretanac93
あなたのお時間をいただき、ありがとうございます。私はノード要求ライブラリを使って、サーバー上のsocker ioファイル内のsocket_idを使って特定のURLにリクエストを送信しました。よろしく –