2011-08-12 9 views

Odpowiedz

19
+0

ok, przepraszam, rozglądałem się dookoła createServer – Luc

+1

To takie dziwne. Właśnie miałem zadać to pytanie. – Malvolio

+9

To jest po prostu źle; 'socket.connect (...)' nie nasłuchuje. Nawet z powrotem w node.js v0.5.4 istniała klasa 'net.server' i ma funkcję' server.listen (...) ', która będzie nasłuchiwała na gniazdach TCP/IP lub Unix. Zobacz moją odpowiedź. – joshperry

59

Aby nasłuchiwać połączeń przychodzących w node.js chcesz użyć klasy net.server.

Standardowy sposób tworząc kopię tej klasy jest z funkcją net.createServer(...). Gdy już masz instancję tej klasy, użyjesz funkcji server.listen(...), aby poinformować serwer, gdzie właściwie słuchać.

Jeśli pierwszy argument jest liczbą słuchać wtedy nodejs słuchać na gniazda TCP/IP z tego numeru portu. Jeśli jednak pierwszym argumentem do nasłuchu jest ciąg znaków, obiekt serwera będzie nasłuchiwał na gnieździe uniksowym na tej ścieżce.

var net = require('net'); 

// This server listens on a Unix socket at /var/run/mysocket 
var unixServer = net.createServer(function(client) { 
    // Do something with the client connection 
}); 
unixServer.listen('/var/run/mysocket'); 

// This server listens on TCP/IP port 1234 
var tcpServer = net.createServer(function(client) { 
    // Do something with the client connection 
}); 
tcpServer.listen(1234); 
+0

Czy byłoby możliwe użycie procesu potomnego i socket.io do połączenia klienta, który komunikuje się z aplikacja po stronie serwera używająca tej metody? czy byłby potrzebny nowy port/ścieżka w celu utrzymania relacji klienta z aplikacją od 1 do 1? – tremor

+2

To jest właściwa odpowiedź. – tgies

+5

Dla tych, którzy się zastanawiają, możesz to zrobić również za pomocą [express 4.x] (https://expressjs.com)! Ponieważ 'app.listen' jest [w zasadzie funkcją pomocniczą] (https://expressjs.com/en/4x/api.html#app.listen), robi' app.listen ("/ var/run/mysocket") 'jest tak samo ważne. –

Powiązane problemy