diff --git a/src/WebSockets/Messages/PusherClientMessage.php b/src/WebSockets/Messages/PusherClientMessage.php index 76a86a4..40f02a6 100644 --- a/src/WebSockets/Messages/PusherClientMessage.php +++ b/src/WebSockets/Messages/PusherClientMessage.php @@ -34,6 +34,10 @@ class PusherClientMessage implements PusherMessage return; } + if (! $this->connection->app->clientMessagesEnabled) { + return; + } + DashboardLogger::clientMessage($this->connection, $this->payload); $channel = $this->channelManager->find($this->connection->app->id, $this->payload->channel); diff --git a/tests/Channels/ChannelTest.php b/tests/Channels/ChannelTest.php index 3fca8b8..60a654a 100644 --- a/tests/Channels/ChannelTest.php +++ b/tests/Channels/ChannelTest.php @@ -43,6 +43,23 @@ class ChannelTest extends TestCase $existingConnection->assertSentEvent('client-test'); } + /** @test */ + public function client_messages_will_not_get_broadcasted_to_other_clients_if_client_messages_are_not_enabled() + { + config()->set('websockets.apps.0.enable_client_messages', false); + + // One connection inside channel "test-channel". + $existingConnection = $this->getConnectedWebSocketConnection(['test-channel']); + + $connection = $this->getConnectedWebSocketConnection(['test-channel']); + + $message = new Message('{"event": "client-test", "data": {}, "channel": "test-channel"}'); + + $this->pusherServer->onMessage($connection, $message); + + $existingConnection->assertNotSentEvent('client-test'); + } + /** @test */ public function closed_connections_get_removed_from_all_connected_channels() { diff --git a/tests/TestCase.php b/tests/TestCase.php index 75a0bae..b6115f6 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -39,8 +39,9 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase 'name' => 'Test App', 'id' => 1234, 'key' => 'TestKey', - 'secret' => 'TestSecret' - ] + 'secret' => 'TestSecret', + 'enable_client_messages' => true, + ], ]); }