2012-08-03 15 views
5

Per il mio sito Web ho scritto un server WebSockets in C# (la lingua più preferita per il codice) che utilizza Fleck e sono circa 600 righe di codice. Tutto sembra funzionare in modo decente (a volte un po 'instabile. Non sono sicuro che si tratti di un problema con il mio codice o Fleck).Soluzione moderna per i server WebSocket?

Tuttavia, desidero spostare questo dal mio computer a un dominio effettivo e non sono sicuro se ci siano provider di hosting che supportino le applicazioni di console .NET in questo modo.

Stavo pensando che forse avrei dovuto riscriverlo in un'altra lingua come PHP, ma sono un po 'incerto sull'intera idea. Esistono provider di hosting popolari che supportano ciò che sto cercando? E anche se lo sono, è una buona idea? Immagino che potrebbe essere meno sicuro o più lento della soluzione tipica dell'uso di Perl, PHP o Python per i server. (un sacco di P)

Infine, se fosse una buona idea riscrivere, non sono sicuro di quale lingua lo scriverei. È passato un po 'di tempo e non sono sicuro di ciò che tutti usano ancora. PHP è ancora considerato il più supportato e sicuro per i server web?

Quale implementazione WebSockets è più adatta? Mi ci è voluto un po 'per trovare Fleck e sembra che ci siano il doppio dei derivati ​​PHP e mi sento nuovamente un po' sopraffatto. Inoltre, molti post su Stackoverflow relativi a WebSockets risalgono a due anni fa quando non erano supportati.

Scusate per la mia ingenuità e mancanza di concentrazione nella mia domanda, ma come potete vedere sono un po 'confuso su quale dovrebbe essere la mia linea d'azione e sto cercando qualche intuizione. Grazie per aver letto.

risposta

5

Probabilmente il server WebSocket più popolare è Socket.IO. È implementato in Node (Javascript) e presenta fallback a polling lungo/AJAX quando il supporto WebSockets non è disponibile.

L'implementazione più supportata di WebSockets è il progetto python pywebsocket che viene utilizzato da Mozilla e Google per lo sviluppo e il test delle implementazioni del browser client. Inoltre, pywebsocket è progettato per integrarsi facilmente con Apache e consente di eseguire il server Web e il servizio Websocket sulle stesse porte.

Se l'applicazione richiede solo un servizio di messaggistica basato su WebSocket ed è in gran parte peer-to-peer, è possibile utilizzare un servizio WebSocket commerciale come Pusher. Questo potrebbe salvarti dal dover ospitare e gestire il tuo server per questo.

Non consiglierei PHP per i server WebSocket. Fino a poco tempo fa non esisteva un'implementazione PHP che supportava la variazione del protocollo WebSocket più vecchio e più recente. Il più vecchio è ancora utilizzato dagli attuali dispositivi iOS e la nuova versione IETF 6455 del protocollo è utilizzata da Chrome, Firefox, IE10 e il polyfill WebSocket basato su Flash web-socket-js.

Inoltre, si chiede se PHP è ancora considerato il più supportato e sicuro per i server web. Certamente, PHP ha sempre avuto un'ottima documentazione ed esempi e una distribuzione molto ampia in modo da poter sostenere che è ben supportato. Tuttavia, PHP si trova in fondo alla lista in termini di sicurezza. Non avrei certamente riscritto la tua applicazione da zero in PHP.

Se si utilizzano lingue parziali come C, è possibile considerare libwebsockets che è possibile utilizzare per creare un server WebSocket C o C++.Andy Green ha sviluppato e mantiene libwebsockets e ha partecipato al gruppo di lavoro IETF che ha sviluppato lo standard.

Ruby è un'altra lingua/comunità che ha visto un sacco di assorbimento di WebSockets (forse secondo dietro Node). La biblioteca websocket più importante per Ruby è em-weboskcet.

+1

Questa è una buona lista, da parte mia mi piacerebbe aggiungere che se si desidera utilizzare Python e sono disposti a scambiare un po 'di sostenibilità per le prestazioni (o semplicemente preferisce una soluzione minimalista), hanno uno sguardo al gevent-websocket http: //www.gelens.org/code/gevent-websocket/ – Dreen

-1

puoi provare node.js, è "nuovo" e ha un bell'aspetto. Saluti

+1

Nodo (node.js) non (ancora) hanno incorporato il supporto websocket. Forse volevi dire il Socket.IO molto popolare che viene realizzato nel nodo. – kanaka