Merge branch 'master' of github.com:beyondcode/laravel-websockets
This commit is contained in:
commit
5593b96dd2
|
|
@ -55,8 +55,8 @@ class Channel
|
||||||
|
|
||||||
public function broadcastToOthers(ConnectionInterface $connection, $payload)
|
public function broadcastToOthers(ConnectionInterface $connection, $payload)
|
||||||
{
|
{
|
||||||
Collection::make($this->connections)->reject(function ($connection) use ($connection) {
|
Collection::make($this->connections)->reject(function ($existingConnection) use ($connection) {
|
||||||
return $connection->socketId === $connection->socketId;
|
return $existingConnection->socketId === $connection->socketId;
|
||||||
})->each->send(json_encode($payload));
|
})->each->send(json_encode($payload));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -16,7 +16,7 @@ class PresenceChannel extends Channel
|
||||||
$this->saveConnection($connection);
|
$this->saveConnection($connection);
|
||||||
|
|
||||||
$channelData = json_decode($payload->channel_data);
|
$channelData = json_decode($payload->channel_data);
|
||||||
$this->subscriptions[$channelData->user_id] = $channelData;
|
$this->subscriptions[$connection->socketId] = $channelData;
|
||||||
|
|
||||||
// Send the success event
|
// Send the success event
|
||||||
$connection->send(json_encode([
|
$connection->send(json_encode([
|
||||||
|
|
@ -36,14 +36,22 @@ class PresenceChannel extends Channel
|
||||||
{
|
{
|
||||||
parent::unsubscribe($connection);
|
parent::unsubscribe($connection);
|
||||||
|
|
||||||
//TODO: send member_removed message back to client, and broadcast to everyone on channel
|
$this->broadcastToOthers($connection, [
|
||||||
|
'event' => 'pusher_internal:member_removed',
|
||||||
|
'channel' => $this->channelId,
|
||||||
|
'data' => json_encode([
|
||||||
|
'user_id' => $this->subscriptions[$connection->socketId]->user_id
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
|
||||||
|
unset($this->subscriptions[$connection->socketId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getChannelData(): array
|
protected function getChannelData(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'presence' => [
|
'presence' => [
|
||||||
'ids' => array_keys($this->subscriptions),
|
'ids' => array_map(function($channelData) { return $channelData->user_id; }, $this->subscriptions),
|
||||||
'hash' => array_map(function($channelData) { return $channelData->user_info; }, $this->subscriptions),
|
'hash' => array_map(function($channelData) { return $channelData->user_info; }, $this->subscriptions),
|
||||||
'count' => count($this->subscriptions)
|
'count' => count($this->subscriptions)
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -46,9 +46,9 @@ class EchoServer extends WebSocketController
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onMessage(ConnectionInterface $conn, MessageInterface $message)
|
public function onMessage(ConnectionInterface $connection, MessageInterface $message)
|
||||||
{
|
{
|
||||||
$message = RespondableMessageFactory::createForMessage($message, $conn, $this->channelManager);
|
$message = RespondableMessageFactory::createForMessage($message, $connection, $this->channelManager);
|
||||||
|
|
||||||
$message->respond();
|
$message->respond();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue