2012-05-22 2 views
106

Ich habe einen socket.io-Server ausgeführt und eine übereinstimmende Webseite mit einem socket.io.js-Client. Alles funktioniert gut.Node.js-Client für einen socket.io-Server

Aber ich frage mich, ob es möglich ist, auf einem anderen Rechner eine separate node.js-Anwendung auszuführen, die als Client fungieren und sich mit dem erwähnten socket.io-Server verbinden würde?

+2

Wie kann ich die Antwort von socket.emit()? – codecowboy

+1

Gehen Sie durch die https://github.com/LearnBoost/socket.io-client Dokumentation, ich bin mir sicher, dass es da ist. Es ist eine Weile her, also kann ich mich nicht erinnern, tut mir leid ... –

+6

Es funktioniert nicht, wenn die 'io.connect <-Funktion wie erwähnt aufgerufen wird. Es sollte wie folgt aufgerufen werden: 'socket = io.connect ('http: // localhost: 1337');' – ceremcem

Antwort

65

das möglich sein sollte Socket.IO-Client verwenden: https://github.com/LearnBoost/socket.io-client

+4

Uhm, könnte ich verwechseln, aber das sieht aus wie der Client, der im Browser ausgeführt wird. Was ich brauche, ist ein eigenständiger node.js Client. –

+0

Ich habe kürzlich nicht überprüft, aber in Node 0.4.x funktionierte das auch auf dem Server (ich habe das in einem früheren Projekt tatsächlich implementiert). – alessioalex

+0

ARBEITEN! Danke :) –

5

Nach der Installation von socket.io-Client:

npm install socket.io-client 

Dies ist, wie der Client-Code wie folgt aussieht:

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.

24

Hinzufügen eines Beispiels für die oben angegebene Lösung. Durch die Verwendung von socket.io-clienthttps://github.com/socketio/socket.io-client

Client Side:

//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'); 

Server Side:

//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'); 
}); 

Run:

Open 2-Konsole und führen node server.js und node client.js

+0

Tolle Beispiele! Eine Sache, auf der Client-Seite, glaube ich nicht, dass die "socket" Variable an das Verbindungsereignis weitergegeben wird. Vielleicht irre ich mich, aber das scheint das Verhalten zu sein, das ich mit npm socket.io-client sehe –