php - tutorial - Symfony2 WebSocketBundle-ZMQ Push no funciona
websocket php mysql (0)
Estoy usando Symfony2 para construir una aplicación de chat simple. Decidí usar GeniusesOfSymfony / WebSocketBundle para mi websocket, que funciona con Ratchet:
https://github.com/GeniusesOfSymfony/WebSocketBundle
Logré hacer que el chat funcionara con PubSub, pero quiero usar la integración de inserción en su lugar: quiero que el cliente envíe el mensaje a través de AJAX a mi controlador Symfony2, que a su vez debe enviar el mensaje a todos los clientes del websocket.
Seguí esta página de documentación:
https://github.com/GeniusesOfSymfony/WebSocketBundle/blob/master/Resources/docs/Pusher.md
Intenté usar ZMQ y Websocket Pusher.
Con ZMQ, cuando ejecuto el websocket, obtengo la notificación de cmd:
ZMQ transporte escuchando en 127.0.0.1:5555
Sin embargo, presionar mensajes no funciona:
$pusher = $this->container->get("gos_web_socket.zmq.pusher");
//push(data, route_name, route_arguments)
$pusher->push(["type" => "newMessage", "text" => $request->request->get("msg")], "chat_topic");
Este es el método onPush en mi clase ChatTopic:
class ChatTopic implements TopicInterface, PushableTopicInterface {
public function onPush(Topic $topic, WampRequest $request, $data, $provider) {
$topic->broadcast($data);
}
}
El método onPush nunca se llama. Además, los eventos de empuje nunca se disparan. No parece haber ninguna excepción en el código.
Con Websocket Pusher, ni siquiera puedo ejecutar el servicio. No hay notificación en el cmd como con ZMQ, y al usar el comando netstat
no pude detectar que está escuchando en el puerto 1337. Cuando trato de presionarlo, obtengo la excepción:
No se pudo abrir socket. Motivo: No se pudo establecer conexión porque la máquina objetivo lo rechazó activamente.
Probablemente porque no hay servicio escuchando en el puerto 1337.
PD: estoy en Windows 10 y uso el servidor WAMP. Instalé con éxito la extensión ZMQ en WAMP, como se indica en phpinfo()
.