swooletw / laravel-swoole

High performance HTTP server based on Swoole. Speed up your Laravel or Lumen applications.
MIT License
4.04k stars 390 forks source link

Websocket works incorrectly #487

Open AkioSarkiz opened 3 years ago

AkioSarkiz commented 3 years ago
  1. PHP 8, swoole 4.6.6
  2. Laravel 8
  3. 2.8.1
  4. When i send emit to concrete user, message sent to current user + my id;
  5. I upload images with code and result.
  6. -

it's my route

Websocket::on('example', function ($websocket, $data) {
   $websocket->toUserId([1])->emit('notification', 'only for you message id: 1');
});

User with login=admin & id=2, sent example emit and his got notification for user by id 1. img

User with login=user & id=1, too his got too this message. img

Notice: When i emit from user 1, user 2 don't receiveding message.

P.S. from docs img

Arkanius commented 3 years ago

Thanks for open this issue!

I'll check it out

AkioSarkiz commented 3 years ago

Three months have passed. And the bug was not fixed

albertcht commented 3 years ago

Hi @Arkanius ,

What is your expected result? Can't understand your question yet.

Websocket::on('example', function ($websocket, $data) {
   $websocket->toUserId([1])->emit('notification', 'only for you message id: 1');
});

It will listen to example event, and always send a message to user 1 when this event is triggered.

Arkanius commented 3 years ago

Hi @albertcht!

I think he's saying that the "emit" is always sending the message to the user with id 1 and 2 when it should send just to the user with id 1

AkioSarkiz commented 3 years ago

yes, if user with id 2 send a message to only for 1, user with id 1 gets message, but and user with id 2 gets message

Arkanius commented 3 years ago

@AkioSarkiz What about the other users? I mean, if you have user 3. This user will get the message as well?

AkioSarkiz commented 3 years ago

@Arkanius no, only current (frist) + second