Node.js Client für einen socket.io-Server

120

Ich habe einen socket.io-Server und eine passende Webseite mit einem socket.io.js-Client. Alles funktioniert gut.

Ich frage mich jedoch, ob es auf einem anderen Computer möglich ist, eine separate node.js-Anwendung auszuführen, die als Client fungiert und eine Verbindung zum genannten socket.io-Server herstellt.

Predrag Stojadinović
quelle
2
Wie kann ich die Antwort von socket.emit () anzeigen?
Codecowboy
1
Gehen Sie durch die github.com/LearnBoost/socket.io-client Dokumentation, ich bin sicher , dass es da ist. Es ist eine Weile her, also erinnere ich mich nicht, sorry ...
Predrag Stojadinović
6
Es io.connectfunktioniert nicht, wenn die Funktion wie erwähnt aufgerufen wird. Es sollte genannt werden als:socket = io.connect('http://localhost:1337');
Zeremonie

Antworten:

74

Dies sollte mit dem Socket.IO-Client möglich sein: https://github.com/LearnBoost/socket.io-client

Alessioalex
quelle
8
Ähm, ich könnte mich irren, aber das sieht aus wie der Client, der im Browser ausgeführt wird. Was ich brauche, ist ein eigenständiger node.js-Client.
Predrag Stojadinović
Ich habe in letzter Zeit nicht nachgesehen, aber in Node 0.4.x hat dies auch auf dem Server funktioniert (ich habe dies tatsächlich in einem früheren Projekt implementiert).
Alessioalex
1
Ich bin froh, dass es bei dir funktioniert hat! Übrigens ist es besser, Ihr Arbeitsbeispiel auf die Frage zu setzen, als in einer separaten Antwort.
Alessioalex
Dies wurde für mich unter Windows 8 nicht richtig installiert - ich habe einen Fehler dafür geschrieben
BT
@ PredragStojadinović: Kannst du bitte deinen Code posten? Ich möchte einen NodeJS-Server mit einem anderen verbinden. Kannst du mir helfen? Vielen Dank.
Pritam
42

Hinzufügen eines Beispiels für eine zuvor angegebene Lösung. Mit socket.io-client https://github.com/socketio/socket.io-client

Kundenseite:

//client.js
var io = require('socket.io-client');
var socket = io.connect('http://localhost:3000', {reconnect: true});

// Add a connect listener
socket.on('connect', function (socket) {
    console.log('Connected!');
});
socket.emit('CH01', 'me', 'test msg');

Serverseite:

//server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function (socket){
   console.log('connection');

  socket.on('CH01', function (from, msg) {
    console.log('MSG', from, ' saying ', msg);
  });

});

http.listen(3000, function () {
  console.log('listening on *:3000');
});

Lauf :

Öffnen Sie 2 Konsole und führen Sie node server.jsund ausnode client.js

AzizSM
quelle
2
Tolle Beispiele! Auf der Clientseite glaube ich nicht, dass die Variable "Socket" beim Verbindungsereignis übergeben wird. Vielleicht irre ich mich, aber das scheint das Verhalten zu sein, das ich mit npm socket.io-client sehe
Ryan S
8

Nach der Installation von socket.io-client:

npm install socket.io-client

So sieht der Client-Code aus:

var io = require('socket.io-client'),
socket = io.connect('localhost', {
    port: 1337
});
socket.on('connect', function () { console.log("socket connected"); });
socket.emit('private message', { user: 'me', msg: 'whazzzup?' });

Danke alessioalex .

Predrag Stojadinović
quelle
0

Ja, Sie können jeden Client verwenden, solange er von socket.io unterstützt wird. Egal ob sein Knoten, Java, Android oder schnell. Sie müssen lediglich das Client-Paket von socket.io installieren.

Suleman Tanveer
quelle