Portál AbcLinuxu, 19. července 2025 10:38


Dotaz: WebSockets a WSGI

Konqui avatar 19.6.2010 17:19 Konqui | skóre: 18 | blog: Konqui | Rožnov pod Radhoštěm
WebSockets a WSGI
Přečteno: 230×
Odpovědět | Admin
Zdravím. Má někdo zkušenosti s rozchozením HTML5 Socketů na portu 80 přes Apache a WSGI?

Problém je při tzv. handshake které websockets pro spojení potřebují.

Prohlížeč pošle serveru hlavičky + vygenerovaný hash a server musí poslat "vypočítaný" handshake na zákaldě hlaviček.

Komunikace probíhá zhruba takto:
GET /echo HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:9998
Origin: http://localhost:8000
Sec-WebSocket-Key1: 7 3628s6`rG85>R#B9_
Sec-WebSocket-Key2: 3,'826C4f- g57>n52"\1jJ

.O4:i..+
Problém dělá poslední řádek - tedy jakýsi vygenerovaný hash, který potřebuji pro vytvoření handshake, ale HTTP server mi ho odfiltruje.

Hlavičky mám v environ ale hash už ne.

Odpověď by měla být takto:
HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Location: ws://localhost:9998/echo
Sec-WebSocket-Origin: http://localhost:8000

..9....c.....X@.
...kde poslední řádek je vygenerovaný z předchozího hashe. Nesetkal se s tím někdo?

Děkuji
Open/save dialogy z GTK+ jsou nejkřiklavější ukázkou toho nejdebilnějšího software, co vůbec může existovat.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.6.2010 21:12 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: WebSockets a WSGI
Odpovědět | | Sbalit | Link | Blokovat | Admin
Posílat HTTP GET požadavek s tělem je opravdu hodně nezvyklé, Apache to zřejmě ještě nepodporuje (tím si nejsem 100% jistý, ale s trochou googlování by se to mělo dát zjistit).

Řešením je použít nějaké udělátko pro Apache (pywebsocket) nebo použít jiný HTTP server, který již pro to podporu má (např. Tornado). Nebo to do toho Apache dodělat, že :-) (Zkusil bych zjistit, jak se to dělá v PHP, vsadím se, že už se na to na webu válí stovky skriptíků... přitom mod_php by mělo být "postiženo" stejně jako mod_wsgi/mod_python.)
Konqui avatar 19.6.2010 22:27 Konqui | skóre: 18 | blog: Konqui | Rožnov pod Radhoštěm
Rozbalit Rozbalit vše Re: WebSockets a WSGI
PHP mě skoro vůbec nezajímá, já to potřebuju nějak (jakkoliv) předat WSGI aplikaci která běží v deamon módu.

Na mod_pywebsockets jsem se díval ale to je spíše experimentální věc (tak jak to uznávají oni).

Do Apache zasahovat je z časového hlediska nemožné, zkusím nějaké jiné webservery.

Nejde o mod__něco, spíše o to, že většina takových aplikací si otevírá spojení zvlášť na jiném portu aby se vyhnula takovýmto problémům...
Open/save dialogy z GTK+ jsou nejkřiklavější ukázkou toho nejdebilnějšího software, co vůbec může existovat.
19.6.2010 23:46 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: WebSockets a WSGI
Nejde o mod__něco, spíše o to, že většina takových aplikací si otevírá spojení zvlášť na jiném portu aby se vyhnula takovýmto problémům...
Asi nerozumím přesně, co tím chceš říct - že většina již existujících aplikací, tj. stránek v HTML5, už to řeší právě tak, že pro ně na jiném portu běží nějaký zvláštní webserver, který to umí, narozdíl od nějakého obvyklého Apache na portu 80?
Konqui avatar 20.6.2010 07:57 Konqui | skóre: 18 | blog: Konqui | Rožnov pod Radhoštěm
Rozbalit Rozbalit vše Re: WebSockets a WSGI
Chtěl jsem říct to, že si většinou otevřou socket na jiném portu a tím ten webserver obcházejí.
Open/save dialogy z GTK+ jsou nejkřiklavější ukázkou toho nejdebilnějšího software, co vůbec může existovat.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.