¿Hay alguna forma alternativa de sockets web en el lado del cliente javascript en lugar de php.
Estoy usando PHP para comunicarme, pero quiero lo mismo usando javascript en el lado del cliente. Aquí está mi PHP
<?php $socket = socket_create(AF_INET, SOCK_STREAM, 0); $message = 'hello'; if (!$socket) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); print_r("Couldn't create socket: [$errorcode] $errormsg \n"); die(); } //Connect socket to remote server if (!socket_connect($socket,'10.201.1.114', '4000')) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); print_r("Could not connect: [$errorcode] $errormsg \n"); die(); } if (!socket_send($socket, $message, strlen($message), 0)) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); echo "Could not send data: [$errorcode] $errormsg \n"; die(); } //echo "Reading response:\n\n"; $res = ''; while ($response = socket_read($socket, 4096)) { $res .= $response; } socket_close($socket);De acuerdo, no nos engañemos, PHP no es lo mejor para websockets por el momento.
Algunas alternativas que me gustan son:
Estos pueden ayudar:
https://github.com/websockets/ws
https://websockets.readthedocs.io/en/stable/
https://sanicframework.org/en/guide/advanced/websockets.html
Luego, si realmente desea que su servidor esté hecho con PHP, siempre puede crear el servidor websockets con python o node.js y usar herramientas de mensajería (como RabbitMQ, REDIS, ...) para transmitir mensajes a PHP de forma asíncrona.
Una posible solución es utilizar la API de WebSocket . Proporcionaré un ejemplo de cómo sería ese tipo de implementación; esto estará más cerca del código repetitivo que de un ejemplo completamente funcional.
function testing() { const msg = "some message"; const socket = new WebSocket("ws://someaddress:port"); // the socket errored... socket.onerror = (event) => { console.log("Socket errored: ", event.data); }; // the socket opens... socket.onopen = (event) => { console.log("Socket opened: ", event.data); // since the socket is open, we can send messages now socket.send(msg); }; // the socket gets a message socket.onmessage = (event) => { console.log("Socket messaged: ", event.data); }; // the socket closes... socket.onclose = (event) => { console.log("Socket closed: ", event.data); }; } testing();