2010-10-01 17 views

Odpowiedz

0

Serwer Node.js nie jest w żaden sposób związany z przeglądarką internetową jako klient. Każdy program może korzystać z biblioteki gniazd dostarczanej przez jej biblioteki pomocnicze w celu nawiązania połączenia z serwerem Node.js.

EDIT

odpowiedzi na Twój komentarz: nie zapominaj, że node.js jest Javascript! Jeśli chcesz okresowo uruchamiać kod - w bardzo podobny sposób, jak może to być proces demona - możesz użyć setInterval, aby uruchomić wywołanie zwrotne co każde millisekundy. Powinieneś być w stanie to zrobić bezpośrednio w twoim programie węzła.

+0

Tak, mam serwer node.js działa .... I po prostu chcę być w stanie uzyskać aktualizację w czasie rzeczywistym na moim kliencie za pomocą websocket bez korzystania z przeglądarki po stronie klienta .... w zasadzie chcę mieć proces demona klienta, który nasłuchuje na wiadomości push w czasie rzeczywistym z mojego serwera node.js. .. Używam węzła po stronie klienta również ... Jednak nie jestem pewien, jak uczynić proces węzła deamon .... węzeł nie blokuje .... podczas gdy ja teraz pytam klienta do blokowania (while pętla na sock.onmessage). – haijin

+0

@haijin: odpowiedział na ciebie komentarz w mojej odpowiedzi –

+0

Znalazłem websock python lib, który pracował dobrze dla mojego przypadku..Dobre. http://freeasinbeard.org/post/1008785379/python-websocket-a-websocket-client-library-for – haijin

4

Remy Sharp (@rem) napisał implementację klienta Socket.io, która działa na serwerze. Myślę, że to jest to, czego szukasz: https://github.com/remy/Socket.io-node-client

+0

Socket.io-node-client nie jest implementacją "browserless websocket", jest to podkładka, która umożliwia komunikację klienta "browserless socket.io". specjalnie poprosił o "weblessocket bez przeglądarki". Socket.io-node-client korzysta z implementacji webSocket klienta test socket.io, która obsługuje starą wersję roboczą WebSocket hixie 75/76; nie jest (obecnie) emulowany obiekt WebSocket używany obecnie przez współczesne przeglądarki, więc nie jest odpowiedni do użytku jako ogólna implementacja "przeglądarki bez przeglądarki". Ani klient Socket.io-node-client, ani webSocket klienta test.io nie są właściwym wyborem. –

+0

Nie dbam o niuanse "przeglądarki bez przeglądarki" w porównaniu z "browserless socket.io", po prostu chcę nieczytelnego sposobu komunikowania się między dwoma procesami node.js i wydaje się, że pasuje to do rachunku. – ColinM

9

Aktualny Rekomendacji

Korzystanie websocket-Node z mojego kodu otoki (patrz niżej). W chwili pisania tego artykułu żaden inny projekt publiczny nie jest zgodny z nową specyfikacją hybi, więc jeśli chcesz emulować aktualne wersje przeglądarek, potrzebujesz WebSocket-Node. Jeśli chcesz emulować starsze przeglądarki, takie jak mobilna przeglądarka Safari na iOS 4.2, będziesz potrzebować również jednej z innych bibliotek wymienionych poniżej, ale będziesz musiał samodzielnie zarządzać zdarzeniami związanymi z nazwą obiektu "WebSocket".

Wyświetlana jest lista publicznych wdrożeń klienta WebSocket dla pliku node.js.

Socket.IO

socket.io klient-test realizacja websocket robi hixie projekt 75/76, ale jak to pisze, nie hybi 7+.

https://github.com/LearnBoost/socket.io/blob/master/support/node-websocket-client/lib/websocket.js

Pytam, czy zamierzają zaktualizować do hybi 7+: http://groups.google.com/group/socket_io/browse_thread/thread/d27320502109d0be

Node-websocket-Client

Petera Griessa jest "węzeł-websocket-client" robi hixie szkic 75/76, ale od tego pisania nie hybi 7+.

https://github.com/pgriess/node-websocket-client/blob/master/lib/websocket.js

websocket-Node

Brian McKelvey za websocket-węzeł ma implementację klienta dla hybi 7-17 (protokół wersji 7-13), ale realizacja nie zapewnia przeglądarki stylu Obiekt WebSocket.

https://github.com/Worlize/WebSocket-Node

Oto kod wrapper używam naśladować obiektu przeglądarka stylu websocket:

/** 
* Wrapper for Worlize WebSocketNode to emulate the browser WebSocket object. 
*/ 
var WebSocketClient = require('./WorlizeWebSocketNode/lib/websocket').client; 

exports.WebSocket = function (uri) { 
    var self = this; 
    this.connection = null; 
    this.socket = new WebSocketClient(); 
    this.socket.on('connect', function (connection) { 
    self.connection = connection; 

    connection.on('error', function (error) { 
     self.onerror(); 
    }); 

    connection.on('close', function() { 
     self.onclose(); 
    }); 

    connection.on('message', function (message) { 
     if (message.type === 'utf8') { 
     self.onmessage({data:message.utf8Data}); 
     } 
    }); 

    self.onopen(); 
    }); 
    this.socket.connect(uri); 
} 

exports.WebSocket.prototype.send = function (data) { 
    this.connection.sendUTF(data); 
} 

SockJS

tylko w celach informacyjnych, Marek Majkowskiego SockJS robi nie obejmują klienta węzła. Biblioteka klienta SockJS to po prostu wrapper domena przeglądarki.

https://github.com/sockjs/sockjs-client

Powiązane problemy