websocket сервер запуск скрипта на любом языке программирования

Здравствуйте давно ничего не писал 😉
не было много времени как всегда по свободе стараюсь что то написать сегодня речь пойдет о простом websocket сервере который готов работать с любым скриптом написаным на любом языке будь то php,perl,bash,c#,c,java,ruby,python или любом другом этот сервер имеет название websocketd скачать можно тут : http://websocketd.com/ есть для всех популярных ос даже для windows )) для запуска на FreeBSD или Linux готов из коробки )
посмотрим на то что он может дав команду websocketd —help :
Usage:

Export a single executable program a WebSocket server:
websocketd [options] COMMAND [command args]

Or, export an entire directory of executables as WebSocket endpoints:
websocketd [options] —dir=SOMEDIR

Options:

—port=PORT HTTP port to listen on.

—address=ADDRESS Address to bind to (multiple options allowed)
Use square brackets to specify IPv6 address.
Default: «» (all)

—sameorigin={true,false} Restrict (HTTP 403) protocol upgrades if the
Origin header does not match to requested HTTP
Host. Default: false.

—origin=host[:port][,host[:port]…]
Restrict (HTTP 403) protocol upgrades if the
Origin header does not match to one of the host
and port combinations listed. If the port is not
specified, any port number will match.
Default: «» (allow any origin)

—ssl Listen for HTTPS socket instead of HTTP.
—sslcert=FILE All three options must be used or all of
—sslkey=FILE them should be omitted.

—passenv VAR[,VAR…] Lists environment variables allowed to be
passed to executed scripts.

—reverselookup={true,false} Perform DNS reverse lookups on remote clients.
Default: true

—dir=DIR Allow all scripts in the local directory
to be accessed as WebSockets. If using this,
option, then the standard program and args
options should not be specified.

—staticdir=DIR Serve static files in this directory over HTTP.

—cgidir=DIR Serve CGI scripts in this directory over HTTP.

—header=»…» Set custom HTTP header to each answer. For
example: —header=»Server: someserver/0.0.1″

—header-ws=»….» Same as —header, just applies to only those
responses that indicate upgrade of TCP connection
to a WebSockets protocol.

—header-http=»….» Same as —header, just applies to only to plain
HTTP responses that do not indicate WebSockets
upgrade

—help Print help and exit.

—version Print version and exit.

—license Print license and exit.

—devconsole Enable interactive development console.
This enables you to access the websocketd
server with a web-browser and use a
user interface to quickly test WebSocket
endpoints. For example, to test an
endpoint at ws://[host]/foo, you can
visit http://[host]/foo in your browser.
This flag cannot be used in conjunction
with —staticdir or —cgidir.

—loglevel=LEVEL Log level to use (default access).
From most to least verbose:
debug, trace, access, info, error, fatal

Как видим опций не сильно много но очень много их и не надо 😉
для запуска достаточно ./websocketd —address 127.0.0.1 —port 9000 ./название вашего скрипа.расширение 😉

посмотрим на пример скрипта для php :
#!/usr/bin/env php

<?php

echo «Hello World !».»\n»;

?>

«\n» в конце обязательно должен быть.

пример html и javascript для просмотра работы:

<script>
var ws = new WebSocket(«ws://localhost:9000″);
ws.onmessage = function (evt) {
var t = document.getElementById(‘test’);
t.innerHTML =evt.data;
console.log(evt.data);
};
</script>
<div id=»test»>here is content</div>

Думаю дальше всем понятно как это работает 😉
теперь скажу лишь о возможности передачи сессий в php скрипт серверной стороны 😉
делается это костылем 🙂
в переменных которые доступны серверному скрипту есть $_SERVER[HTTP_COOKIE] оттуда вытаскиваем PHPSESSID и через session_id применяем его на серверной стороне, а что с этим можно соорудить решайте сами 😉
Скажу лишь то что данный сервер websockets очень удобная штука так как и https и http работает на ура =)
надеюсь вам было интересно !
с уважением всегда ваш Taras.Kramarets aka ~NiX~