5

Hace años creé un programa de colaboración en Diversity University MOO - una sala escrita en MOOcode que usaba TCP/IP para comunicarse con un servidor perl en mi campus para compilar y ejecutar C, Perl, Bash y otros programas y devolver los resultados al colaborador de MOO, todo para demostrar los lenguajes de programación en un entorno de enseñanza de MOO. La aplicación suele ser entretenida en cinco o seis idiomas y divertida de jugar. Ahora me gustaría hacer lo mismo en SecondLife usando LSL. La única sugerencia que he recibido hasta ahora de esa multitud es usar una solicitud de WWW, presumiblemente construyendo un mensaje POST http para un proceso CGI. Nunca me interesaron mucho los formularios html, así que prefiero usar TCP/IP o algún otro protocolo de comunicación. ¿Alguien ha intentado esto que le gustaría dar algunas pistas? Hay varios sitios de demostración de LSL en SecondLife, pero me gustaría probar otros lenguajes de compilación y script, incluso PowerShell. Dick S.LSL communications

Respuesta

5

REST ahora está de moda para servicios web. No hay una razón real para pasar a la capa TCP/IP por algo que, según su descripción, no requiere un rendimiento superior o tiempos de respuesta. La compatibilidad con LSL HTTP es bastante buena, así que no deberías tener ningún problema.

Por supuesto, no es ideal recuperar la salida de sus programas en tiempo real, para eso tendría que abrir la conexión http en el servidor y escribir constantemente en el cuerpo de la página (mientras el cliente lee ese). Pero incluso con ir y venir entre el servidor y el cliente, debería obtener una experiencia moderadamente buena.

4

Las opciones de comunicación externa de LSL están limitadas a tres opciones específicas. La wiki oficial de LSL proporciona información más detallada sobre cada opción.

  • HTTP prima: solicitudes se deben iniciar por la escritura LSL
  • xmlhttp: solicitudes se deben iniciar por servicio externo
  • Email: plena comunicación de dos vías, pero con temporizadores de sueño forzadas .
2

Me inclinaría a estar de acuerdo con Ilya.

Lo mejor que puede obtener si desea que la secuencia de comandos sea muy receptiva es hacer que su código del servidor vuelva a llamar al objeto una vez que el servidor haya tenido conocimiento de ello utilizando el XML-RPC.

El wiki principal de Second Life es bastante bueno para el código de ejemplo, etc. XML-RPC

2

función llHTTPRequest de LSL y el correspondiente evento HTTP_RESPONSE son sin duda la mejor opción.

Contrariamente a la suposición planteada en su pregunta, el uso de http no requiere el uso de "formularios html". La carga útil POST (o PUT) puede contener datos organizados de la manera que desee. Una interfaz REST es una buena forma de hacer el tipo de comunicación http de máquina a máquina de la que estamos hablando. Una ventaja de REST sobre html o xml es que REST puede ser mucho menos detallado. Esto es importante cuando comienzas a acercarte al límite de 2048 caracteres de LSL en las respuestas http.

Aunque LSL tiene otros dos métodos de comunicación con el resto de internet (correo electrónico y XML-RPC), su uso en scripts de LSL es altamente desalentado estos días. Ambos sistemas (como se implementa actualmente en Second Life) se basan en servidores centralizados para enrutar mensajes a sus destinos. Esto no se escala bien. Estos servidores están bajo una carga cada vez mayor a medida que Second Life crece.llHTTPRequest, por otro lado, se ejecuta completamente en el simulador que ejecuta su secuencia de comandos, lo que significa que no tiene que preocuparse por los mensajes perdidos debido a los servidores centrales sobrecargados.

Finalmente, pronto se agregará una nueva característica a LSL que permitirá que cualquier script actúe como un servidor http (consulte http://wiki.secondlife.com/wiki/LSL_http_server). Actualmente (a partir de junio de 2009) se implementó en la red beta, pero debería estar en la red principal con la próxima actualización importante. Con esta adición, muchos de los programas LSL a web actuales que sondean regularmente un servidor web para obtener datos actualizados podrán, en cambio, recibir actualizaciones cuando ocurran.

0

Como dijo Ilya, REST y LSL-HTTP serían el camino a seguir.

La nueva implementación de JSON dentro de Linden Scripting Language debería ayudar con eso. Es posible que desee comenzar leyendo la página Json usage in LSL en la wiki oficial.

Cuestiones relacionadas