Klien Node.js untuk server socket.io

120

Saya memiliki server socket.io yang berjalan dan halaman web yang cocok dengan klien socket.io.js. Semuanya bekerja dengan baik.

Tapi, saya bertanya-tanya apakah mungkin, di komputer lain, untuk menjalankan aplikasi node.js terpisah yang akan bertindak sebagai klien dan terhubung ke server socket.io yang disebutkan?

Predrag Stojadinović
sumber
2
Bagaimana cara melihat respon dari socket.emit ()?
codecowboy
1
Buka dokumentasi github.com/LearnBoost/socket.io-client , saya yakin itu ada. Sudah lama, jadi saya tidak ingat, maaf ...
Predrag Stojadinović
6
Tidak berfungsi jika io.connectfungsi dipanggil seperti yang Anda sebutkan. Ini harus disebut sebagai:socket = io.connect('http://localhost:1337');
ceremcem

Jawaban:

74

Itu harus dimungkinkan menggunakan Socket.IO-client: https://github.com/LearnBoost/socket.io-client

alessioalex.dll
sumber
8
Uhm, saya mungkin salah, tapi sepertinya klien ini berjalan di dalam browser. Yang saya butuhkan adalah klien node.js yang berdiri sendiri.
Predrag Stojadinović
Saya belum memeriksa baru-baru ini, tetapi di Node 0.4.x ini juga berfungsi di server (saya sebenarnya telah menerapkan ini di proyek sebelumnya).
alessioalex
1
Saya senang ini berhasil untuk Anda! Ngomong-ngomong, lebih baik meletakkan contoh kerja Anda pada pertanyaan daripada di jawaban terpisah.
alessioalex
Ini tidak menginstal dengan benar untuk saya di windows 8 - saya menulis bug untuk itu
BT
@ PredragStojadinović: Bisakah Anda memposting kode Anda? Saya ingin menghubungkan satu server NodeJS ke yang lain. Bisakah Anda membantu saya? Terima kasih.
Pritam
43

Menambahkan contoh untuk solusi yang diberikan sebelumnya. Dengan menggunakan socket.io-client https://github.com/socketio/socket.io-client

Sisi klien:

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

Sisi server :

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

Lari :

Buka 2 konsol dan jalankan node server.jsdannode client.js

AzizSM
sumber
2
Contoh yang luar biasa! Satu hal, di sisi klien, saya tidak percaya variabel "socket" diteruskan pada acara koneksi. Mungkin saya salah, tetapi sepertinya itulah perilaku yang saya lihat dengan npm socket.io-client
Ryan S
8

Setelah menginstal socket.io-client:

npm install socket.io-client

Seperti inilah tampilan kode klien:

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

Terima kasih alessioalex .

Predrag Stojadinović
sumber
0

Ya, Anda dapat menggunakan klien apa pun selama didukung oleh socket.io. Tidak peduli apakah itu node, java, android atau swift. Yang harus Anda lakukan adalah menginstal paket klien socket.io.

Suleman Tanveer
sumber