Что использовать для создания межпользовательских сообщений(диалоги).
-
- Сообщения: 21
- Зарегистрирован: 2016.01.07, 21:47
Что использовать для создания межпользовательских сообщений(диалоги).
Что использовать для создания межпользовательских сообщений(диалоги). Определенно вебсокеты, но остоваться ли на PHP(ratchet, zmq) или интегрировать Yii2 с node.js? Почему думаю в сторону node.js мало материала как сделать на php.
Re: Что использовать для создания межпользовательских сообщений(диалоги).
Норм материала. Даже готовый пример есть https://packagist.org/packages/consik/yii2-websocket
2b||!2b Just read the instructions
-
- Сообщения: 21
- Зарегистрирован: 2016.01.07, 21:47
Re: Что использовать для создания межпользовательских сообщений(диалоги).
Там пример только простого чата. Это в ratchet есть. А как на счет отправки сообщения определенному пользователю.
Re: Что использовать для создания межпользовательских сообщений(диалоги).
Чет я перепутал. Вот другой репозиторий который я использовал: https://github.com/morozovsk/yii2-websocket
Вот тут от него примеры: https://github.com/morozovsk/websocket-examples
Посмотрите, там у каждого пользователя есть свой $connectionId. Для рассылки сообщения всем они делают так:
Соответственно чтоб отправить сообщение конкретному пользователю надо сделать так: $this->sendToClient($connectionId, $message);
Вот тут от него примеры: https://github.com/morozovsk/websocket-examples
Посмотрите, там у каждого пользователя есть свой $connectionId. Для рассылки сообщения всем они делают так:
Код: Выделить всё
foreach ($this->clients as $clientId => $client) {
$this->sendToClient($clientId, $message);
}
2b||!2b Just read the instructions
Re: Что использовать для создания межпользовательских сообщений(диалоги).
$connectionId приходит в методы onOpen и onClose. В них можно положить этот идентификатор куда нить в кэш и так определять какое соединение соответствует конкретному пользователю.
2b||!2b Just read the instructions
-
- Сообщения: 21
- Зарегистрирован: 2016.01.07, 21:47
Re: Что использовать для создания межпользовательских сообщений(диалоги).
Ну а если очень много пользователей и каждый с кем то общается. И все это в одном foreach. Вообще это правильный подход? Я что то читал про многопоточность. Или все таки node.js и redis?
Re: Что использовать для создания межпользовательских сообщений(диалоги).
node.js однопоточный.
"если очень много пользователей и каждый с кем то общается"
Отправляйте сообщения не всем, только тем кто общается друг с другом.
"если очень много пользователей и каждый с кем то общается"
Отправляйте сообщения не всем, только тем кто общается друг с другом.
2b||!2b Just read the instructions
-
- Сообщения: 21
- Зарегистрирован: 2016.01.07, 21:47
Re: Что использовать для создания межпользовательских сообщений(диалоги).
Что вы хотите что бы я вам ответил на ваши вопросы?
2b||!2b Just read the instructions
-
- Сообщения: 21
- Зарегистрирован: 2016.01.07, 21:47
Re: Что использовать для создания межпользовательских сообщений(диалоги).
Можно как то разделить форкнуть foreach. Я и сам запутался не много. Php многопоточный но однопоточный в плане выполнения скриптов?
-
- Сообщения: 21
- Зарегистрирован: 2016.01.07, 21:47
Re: Что использовать для создания межпользовательских сообщений(диалоги).
Спасибо в любом случае