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?


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


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


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 .


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.