Websocket server til chat

Tags:    php html5 websocket

<< < 12 > >>
Jeg har læst lidt om websocket som ser ud til at være en rigtig god ting til at lave en chat på en hjemmeside.

For at bruge websocket ser det ud til man skal køre en websocket server ved konstant at køre noget PHP kode ved at skrive følgende på kommandoprompten :

php server.php 127.0.0.1 8080

Så står PHP åbenbart og køre det script hele tiden og er klar til der er nogen som forbinder til den og skriver noget på chatten.
Så skal brugerne forbinde til serveren sådan her :

websocket = new WebSocket("ws://localhost:9090");

Men jeg tror ikke jeg kan køre PHP konstant på mit webhotel.
Eller hvordan finder jeg ud af om jeg kan det ?
Det timeouter vel hvis jeg prøver og køre et script konstant vil jeg tro.

Er der nogen der ved hvor jeg kan køre sådan et script konstant så jeg kan lave en chat der bruger websocket ?



16 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Hvis ikke du har konsol adgang til dit webhotel, så kan du sikkert ikke. Hvilken udbyder har du ?

Det lyder som noget lidt gammeldags hosting, for det er jo temmelig billigt at få sin helt egen virtuelle server, som du kan gøre med, hvad du vil. Hvis du får det, så vil du kunne eksekvere et PHP script, men jeg vil anbefale noget andet, og det er Node.js (http://nodejs.org/). Der koder du serveren i JavaScript, og sammen med Socket.io (http://socket.io/) biblioteket får du noget som ligner websockets i stort set alle browsere...også dem, som ikke understøtter websockets.
Det er totalt sweet.



Du tager fejl Theis...websocket er ideel til chat og anden realtime funktionalitet. Du har en fast forbindelse ind til serveren og får et event, når der er noget til dig istedet for at du er nødt til at polle hvert femte sekund eller så'n noget. Hvert request er langt tungere end at holde en forbindelse, og så er der også databaseopslag.



Webhotellet er hos one.com og så vidt jeg ved er der ikke sådan noget virtuelt server noget.



Ehm...
Websocket er efter jeg kan se ikke en særlig god løsning til at lave en chat i da? Ret mig hvis jeg tager fejl. Vil udmiddelbart regne med at det smarteste var at bruge AJAX, og her er jQuery kongen. Sagen er den at så snart en side er loadet, så har PHP ingen mulighed for at opdatere indholdet. Det du beskriver websocket vil lave er en listener der sender nye events, og det er ikke nødvendigt, for at lave en chat.

Websocket, tænker jeg kun er smart hvis du skal have fat i telnet eller lignende.

Med jQuery er det peace og cake. Så tag og brug det i steddet.

Omkring din side, så ligger det på et webhotel hvis du bruger one.com, det vil sige at du intet kan konfigurerer. Så du har ikke adgang til at konfigurer alt det du kan på et VPS/server



Indlæg senest redigeret d. 07.12.2011 19:45 af Bruger #5097
vil give robert ret i at du skulle kigge på noget node.js, bliver dog ikke nemt hos one :(



Hmm kan du nok have ret i. Men kan ikke se hvordan du ville sikre dig at PHP skal kunne opdaterer når der kommer nyt input fra socketen. Men socketen kommer til at køre på serveren, ligegyldig hvad. Så du bliver da nødsaget til at have en AJAX listener som under all omstændigheder kommer til at lytte.

Det er da ikke muligt at starte socketen på clienten?



Nej Theis. Du registrerer et JavaScript callback, som bliver kaldt hver gang serveren sender noget til dig. Første argument til det callback er de data, som er sendt.
En af mine opgaver på www.komogvind.dk er at skrive vores chat om til ren JavaScript og Node.js (i dag bruger vi JavaScript med en Java applet til selve kommunikationen). Dataene, som du modtager, kan så være et object literal med navn/id på afsender, navn/id på chatrum (hvis man kan joine flere rum), chatbesked og så videre og så kan du opdatere siden på baggrund af det. Du skal ikke med jævne intervaller hente opdateringer fra serveren og dermed belaste web/database. Det skalerer ikke. Med websockets kan serveren pushe data ud, når de er klar.

Tag et kig på eksemplerne på http://socket.io/ og ellers hvad der skrives om websocket, for det er virkelig godt til realtidskommunikation og skalerer langt bedre end polling.



Theis
Websockets er rigtigt effektivt netop fordi det ikke er clienten der er first class cityzent men din server.
Din client tjekker først om den browser understøtter websockets, og derefter sætter den en forbindelse op til serveren.
Når dette er gjort så kan du serverside sende forskellige events, og din clientside har så tilhørende eventlisteners som gør at den kan reagere passende til dette.

Det gode er at du kan få din side til at benytte begge dele, men bruge den mest effektive metode når det er muligt.



Det gode er at du kan få din side til at benytte begge dele, men bruge den mest effektive metode når det er muligt.


Med Socket.io biblioteket får man dette gratis. Der opretter man et Socket.io objekt, som har ca. samme funktionalitet som en websocket, og så står den for at finde ud af hvad browseren kan finde ud af. De fleste Comet (http://en.wikipedia.org/wiki/Comet_%28programming%29 ) teknikker er implementeret.

Det hjælper selvfølgelig ikke knallertsvinet, medmindre han er klar på at skifte udbyder så han har kontrol med serveren.



Indlæg senest redigeret d. 08.12.2011 09:36 af Bruger #2695
Er der noget sted hvor jeg gratis kan komme til at prøve det med at køre en websocket server ?

På socket.io hjemmesiden står how to use : "npm install socket.io"... øh hvad menes der med det ?
Jeg har vist ikke noget program der hedder npm.
Er det meningen at man skal installer et modul i http serveren eller hvordan ?

Kan jeg bruge socket.io på one.com ?



<< < 12 > >>
t