Я не уверен на 100%, что это правильно, но у меня есть сервер Ratchet WebSocket, правильно работающий в качестве службы чата. Однако я хочу, чтобы, когда пользователь публиковал новую ветку на форумах, сервер автоматически публиковал сообщения в чате, чтобы уведомить их всех об этом новом сообщении.
Я хочу сделать это через быстрое соединение TCP при создании этой темы. Я все еще немного новичок в сокетах и в этой области серверного кодирования. Есть ли простой способ, которым PHP может игнорировать издержки HTTP при подключении к этому сокету того же сервера и просто отправке сообщения?
Вот код, который я пытался использовать в качестве теста, но храповик даже не говорит, что получил соединение или сообщение (ADDR и порт верны, socket_connect возвращает TRUE):
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$string = "Hello, a new post has been BLAH";
$Socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$Status = socket_connect($Socket, "***", "***");
$Bytes = socket_write($Socket, $string, strlen($string));
socket_strerror(socket_last_error());
socket_close($Socket);
Решение, предлагаемое на сайте Ratchet, состоит в том, чтобы использовать ZeroMQ, чтобы ваш синхронный php (веб-сервер, который выполняет работу с базой данных для нового сообщения) передавал сообщение на сервер Ratchet.
У них есть довольно хорошие документы в http://socketo.me/docs/push
Других решений пока нет …