roHttpServer
13 min
este objeto permite el procesamiento de solicitudes restful http/https desde url remotas al servidor web integrado del reproductor brightsign muchas de las solicitudes se proporcionan al script como objetos rohttpevent para su manejo el equivalente en javascript es node js creación del objeto el objeto rohttpserver se crea con un roassociativearray createobject("rohttpserver", parameters as roassociativearray) el array asociativo puede contener los siguientes parámetros puerto \<font color="#6b21a8">int\</font> el número de puerto del servidor web integrado https \<font color="#6b21a8">roassociativearray\</font> un conjunto de parámetros de configuración https key file \<font color="#6b21a8">string\</font> el nombre de un archivo que contiene la clave privada en formato pem si no se pasan ni frase de contraseña ni obfuscated passphrase , entonces el archivo de clave debe estar sin cifrar certificate file \<font color="#6b21a8">string\</font> el nombre de un archivo que contiene el certificado en formato pem frase de contraseña \<font color="#6b21a8">string\</font> la frase de contraseña para descifrar el archivo de clave obfuscated passphrase \<font color="#6b21a8">string\</font> la frase de contraseña ofuscada para descifrar el archivo de clave contacte con support\@brightsign biz mailto\ support\@brightsign biz para obtener más información sobre cómo generar una clave para la ofuscación y almacenarla en el reproductor bind to interface \<font color="#6b21a8">string\</font> o \<font color="#6b21a8">int\</font> acepte conexiones únicamente en la interfaz de red especificada se prefiere usar un nombre de interfaz de tipo string (p ej , “eth0” para ethernet, “wlan0” para wifi, “lo” para loopback) se admite un entero para compatibilidad con versiones anteriores con 0 para ethernet, 1 para wifi y 32767 para loopback esto está disponible a partir de bos 9 1 92 si la clave y el certificado están contenidos en un solo archivo, puede pasarse como certificate file (y key file puede omitirse) ejemplo server = createobject("rohttpserver", { port 443, https { certificate file "cert pem", passphrase "sekrit" } }) ifhttpserver cada método controlador “add” descrito a continuación toma un array asociativo como parámetro los valores en el array asociativo especifican cómo se comporta el controlador consulte la tabla al final de esta sección para ver los pares comunes de clave\ valor getfailurereason() as string proporciona información útil adicional si falla un método rohttpserver addgetfromstring(parameters as roassociativearray) as boolean hace que cualquier solicitud http get para la ruta url especificada se responda directamente con el contenido del miembro "body" del array asociativo de parámetros el tipo mime (y potencialmente el conjunto de caracteres completo) debe especificarse si se espera que la solicitud provenga de un navegador web la solicitud se maneja completamente dentro del método rohttpserver ; no se envían eventos al puerto de mensajes addgetfromfile(parameters as roassociativearray) as boolean hace que cualquier solicitud http get para la ruta url especificada se responda directamente desde el archivo especificado siempre debe especificar el tipo mime (y posiblemente el conjunto de caracteres) si espera que la solicitud provenga de un navegador web la solicitud se maneja completamente dentro del método rohttpserver ; no se envían eventos al puerto de mensajes addgetfromfolder(parameters as roassociativearray) as boolean construye un controlador dinámico que sirve archivos estáticos, los cuales aparecerán como elementos secundarios de la carpeta de almacenamiento definida este método acepta un array asociativo con los siguientes parámetros carpeta la ruta de archivo de la carpeta que actuará como el directorio raíz del servidor si este parámetro no está presente, se servirá todo el contenido del dispositivo de almacenamiento url prefix el prefijo de url bajo el cual se servirán los archivos si este parámetro está ausente, la url coincidirá desde la raíz filtros un arreglo de filtros cada filtro es un arreglo asociativo con los siguientes parámetros tenga en cuenta que si los parámetros "re" y "ext" están ausentes, el filtro coincidirá con todo re la expresión regular para hacer coincidir con la url de la solicitud ext la extensión para hacer coincidir con el archivo hoja de la url de la solicitud encabezados un arreglo asociativo que contiene encabezados arbitrarios para incluirse con la respuesta automática content type el contenido del encabezado "content type" incluido con la respuesta automática esto no puede establecerse en el mismo filtro que los encabezados el tipo mime y el conjunto de caracteres pueden especificarse juntos (p ej , "text/plain; charset=utf 8") debe definir todos los tipos de contenido de la carpeta para que la carpeta se cargue correctamente en el servidor por ejemplo mimetypes = \[{ext " html", content type "text/html;charset=utf 8"},{ext " js", content type "text/javascript;charset=utf 8"},{ext " css", content type "text/css;charset=utf 8"},{ext " png", content type "image/png"},{ext " otf", content type "font/otf"}] server addgetfromfolder({ url prefix "/getfolder", folder "example", filters mimetypes}) addgetfromevent(parameters as roassociativearray) as boolean solicita que se envíe un evento de tipo rohttpevent al puerto de mensajes configurado esto ocurre cuando se realiza una solicitud http get para la ruta url especificada addposttostring(parameters as roassociativearray) as boolean solicita que se envíe un evento de tipo rohttpevent al puerto de mensajes configurado esto ocurre cuando se realiza una solicitud http post para la ruta url especificada use el método rohttpevent getrequestbodystring() para recuperar el cuerpo publicado addposttofile(parameters as roassociativearray) as boolean solicita que, cuando se realice una solicitud http post a la ruta url especificada, el cuerpo de la solicitud se almacene en un archivo temporal de acuerdo con el valor parameters\["destination directory"] en el arreglo asociativo cuando esta solicitud se completa, se envía un evento rohttpevent al puerto de mensajes configurado use el método rohttpevent getrequestbodyfile() para recuperar el nombre del archivo temporal si el archivo todavía existe en el momento en que se envía la respuesta, se eliminará automáticamente sin embargo, si el reproductor se reinicia o pierde energía durante el proceso post, el archivo no se eliminará por esta razón, recomendamos usar un subdirectorio dedicado como "destination directory" y limpiar este subdirectorio durante el inicio (usando deletedirectory() ) antes de agregar controladores que hagan referencia a él addposttoformdata(parameters as roassociativearray) as boolean solicita que, cuando se realice una solicitud http post a la ruta url especificada, se intente almacenar los datos del formulario (pasados como application/x www form urlencoded o multipart/form data ) en un arreglo asociativo que puede recuperarse llamando al método rohttpevent getformdata() addmethodfromevent(parameters as roassociativearray) as boolean solicita que se envíe un evento de tipo rohttpevent al puerto de mensajes configurado a diferencia de addgetfromevent() , este método puede admitir métodos http arbitrarios el método http se especifica usando el miembro method en el arreglo asociativo addmethodtofile(parameters as roassociativearray) as boolean solicita que, cuando se realice una solicitud http arbitraria a la ruta url especificada, el cuerpo de la solicitud se almacene en un archivo temporal de acuerdo con el valor parameters\["destination directory"] en el arreglo asociativo el método http se especifica usando el miembro método en el arreglo asociativo cuando la solicitud se completa, se envía un evento rohttpevent al puerto de mensajes configurado use el método rohttpevent getrequestbodyfile() para recuperar el nombre del archivo temporal si el archivo todavía existe en el momento en que se envía la respuesta, se eliminará automáticamente addmethodtostring(parameters as roassociativearray) as boolean intenta admitir un método http arbitrario el cuerpo de la solicitud se coloca en una cadena y se genera un evento esto hace que el cuerpo de la solicitud esté disponible mediante el método rohttpevent getrequestbodystring() se puede enviar una respuesta de la misma manera que el método addgettoevent() setupdwslink(title as string) as boolean genera una pestaña en el servidor web de diagnóstico (dws) docid\ qxt4yhey7iej m9dh73wm que enlaza directamente a la base \<ip address\ port> de la instancia rohttpserver la cadena pasada especifica el título de la pestaña ejemplo server1 setupdwslink("my aws link") server2 setupdwslink("my other aws link") parámetros para los métodos del controlador "add" la siguiente tabla describe pares clave\ valor comunes para los métodos del controlador "add" nombre se aplica a valor url path todos la ruta para la que se utilizará el método del controlador user data addgetfromevent() addposttostring() addposttofile() addmethodtostring() un valor definido por el usuario que puede recuperarse llamando a rohttpevent getuserdata() method addmethodfromevent() addmethodtofile() el método http asociado con el rohttpevent generado el tipo de método puede recuperarse luego usando rohttpevent getmethod() passwords todos un arreglo asociativo que contiene una asignación entre nombres de usuario y contraseñas auth todos el tipo de autenticación que se utilizará cuando se establezcan contraseñas este valor puede ser "basic" o "digest" el valor predeterminado es “digest” si no se especifica realm todos el dominio de autenticación, que los navegadores web mostrarán al solicitar un nombre de usuario y una contraseña headers addgetfromfile() un arreglo asociativo que contiene encabezados arbitrarios que se incluirán con la respuesta automatizada content type addgetfromfile() el contenido del encabezado "content type" que se incluye con la respuesta automatizada esto no puede establecerse al mismo tiempo que el miembro headers puede establecer tanto el tipo mime como el juego de caracteres juntos (por ejemplo, "text/plain; charset=utf 8") body addgetfromstring() el cuerpo de la respuesta nombre de archivo addgetfromfile() la ruta al archivo utilizado para el cuerpo de la respuesta directorio de destino addposttofile() la ruta al directorio utilizado para el archivo temporal que contiene el cuerpo de la solicitud se generará automáticamente un nombre de archivo aleatorio ifmessageport setport(port as romessageport) publica mensajes de tipo rohttpevent en el puerto de mensajes adjunto