socket.ioサーバーのNode.jsクライアント


120

socket.ioサーバーを実行しており、socket.io.jsクライアントと一致するWebページがあります。すべて正常に動作します。

しかし、別のマシンで、クライアントとして機能し、前述のsocket.ioサーバーに接続する別のnode.jsアプリケーションを実行できるかどうか疑問に思っています。


2
socket.emit()からの応答を表示するにはどうすればよいですか?
codecowboy 2014年

1
github.com/LearnBoost/socket.io-clientのドキュメントを確認してください。そこにあるはずです。久しぶりなので覚えていません、ごめんなさい...
PredragStojadinović14

6
io.connectあなたが言ったように関数が呼び出された場合、それは機能していません。:それはのように呼ばれるべきsocket = io.connect('http://localhost:1337');
ceremcem

回答:


74

それはSocket.IO-clientを使用して可能になるはずです:https : //github.com/LearnBoost/socket.io-client


8
うーん、間違えたかもしれませんが、これはブラウザ内で実行されるクライアントのように見えます。必要なのは、スタンドアロンのnode.jsクライアントです。
PredragStojadinović12年

私は最近チェックしていませんが、Node 0.4.xではサーバーでも機能しました(これは過去のプロジェクトで実際に実装しました)。
alessioalex

1
お役に立てて嬉しいです!ところで、別の答えではなく、質問に実際の例を載せた方がいいです。
alessioalex

これは、Windows 8上で私のために正しくインストールされませんでした-私はそれのためにバグを書いた
BT

@PredragStojadinović:コードを投稿していただけますか?NodeJSサーバーを別のサーバーに接続したい。あなたは私を助けることができます?ありがとう。
Pritam

42

前述のソリューションの例を追加します。https://github.com/socketio/socket.io-clientを使用するsocket.io-client

クライアント側:

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

実行:

2つのコンソールを開いて実行しnode server.jsnode client.js


2
素晴らしい例!1つは、クライアント側で、「ソケット」変数が接続イベントで渡されるとは思わないことです。多分私は間違っているかもしれませんが、それは私がnpm socket.io-clientで見ている動作のようです
Ryan S

8

socket.io-clientをインストールした後:

npm install socket.io-client

クライアントコードは次のようになります。

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

ありがとうalessioalex


0

はい、socket.ioでサポートされている限り、どのクライアントでも使用できます。ノード、Java、Android、Swiftに関係なく。あなたがしなければならないすべてはsocket.ioのクライアントパッケージをインストールすることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.