প্রেরক ব্যতীত সমস্ত ক্লায়েন্টকে প্রতিক্রিয়া প্রেরণ করুন


226

সমস্ত ক্লায়েন্টকে কিছু প্রেরণের জন্য আপনি ব্যবহার করুন:

io.sockets.emit('response', data);

ক্লায়েন্টদের কাছ থেকে গ্রহণ করতে, আপনি ব্যবহার করুন:

socket.on('cursor', function(data) {
  ...
});

আমি কীভাবে দুটোকে একত্রিত করতে পারি যাতে কোনও ক্লায়েন্টের কাছ থেকে সার্ভারে কোনও বার্তা পাওয়ার সময় আমি বার্তাটি প্রেরণকারী ব্যতীত সমস্ত ব্যবহারকারীদের কাছে সেই বার্তাটি প্রেরণ করি?

socket.on('cursor', function(data) {
  io.sockets.emit('response', data);
});

আমাকে কী বার্তা সহ ক্লায়েন্ট-আইডি প্রেরণ করে এবং তারপরে ক্লায়েন্ট-সাইডে চেক করে এটিকে হ্যাক করতে হবে বা এর থেকে সহজ উপায় আছে?

উত্তর:


840

এখানে আমার তালিকা (1.0 এর জন্য আপডেট করা হয়েছে) :

// sending to sender-client only
socket.emit('message', "this is a test");

// sending to all clients, include sender
io.emit('message', "this is a test");

// sending to all clients except sender
socket.broadcast.emit('message', "this is a test");

// sending to all clients in 'game' room(channel) except sender
socket.broadcast.to('game').emit('message', 'nice game');

// sending to all clients in 'game' room(channel), include sender
io.in('game').emit('message', 'cool game');

// sending to sender client, only if they are in 'game' room(channel)
socket.to('game').emit('message', 'enjoy the game');

// sending to all clients in namespace 'myNamespace', include sender
io.of('myNamespace').emit('message', 'gg');

// sending to individual socketid
socket.broadcast.to(socketid).emit('message', 'for your eyes only');

// list socketid
for (var socketid in io.sockets.sockets) {}
 OR
Object.keys(io.sockets.sockets).forEach((socketid) => {});

14
আপনার কাছে এই অবদান রাখতে চান প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী ? না আমি এটা তোমার জন্য করতে পারি? (আমি এখানে একটি ব্যাকলিঙ্ক সরবরাহ করব)
কোস

1
আমার এখানে নেই ' ioকেবলsocket
chovy

2
পরিপূরক // sending to all clients except sender, কি জন্য ব্যবহার করবেন // sending a response to sender client only ?
বাসজ

4
আপনি কি দয়া করে যোগ করা যায়নি যে অনুযায়ী এ সকেট # , socket.to('others').emit('an event', { some: 'data' });এছাড়াও সম্প্রচারের একটি ঘরে।
gongzhitaao

119
এটি সকেট.ইও ডক্সের সংযুক্ত সমস্ত কিছুর চেয়ে বেশি কার্যকর
জোনাথন।

43

@LearnRPG উত্তর থেকে কিন্তু 1.0 সহ:

 // send to current request socket client
 socket.emit('message', "this is a test");

 // sending to all clients, include sender
 io.sockets.emit('message', "this is a test"); //still works
 //or
 io.emit('message', 'this is a test');

 // sending to all clients except sender
 socket.broadcast.emit('message', "this is a test");

 // sending to all clients in 'game' room(channel) except sender
 socket.broadcast.to('game').emit('message', 'nice game');

 // sending to all clients in 'game' room(channel), include sender
 // docs says "simply use to or in when broadcasting or emitting"
 io.in('game').emit('message', 'cool game');

 // sending to individual socketid, socketid is like a room
 socket.broadcast.to(socketid).emit('message', 'for your eyes only');

@ ক্র্যাশলোট মন্তব্যের জবাব দিতে, socketidএখান থেকে এসেছে:

var io = require('socket.io')(server);
io.on('connection', function(socket) { console.log(socket.id); })

3
অসাধারণ! আপনি socketidপৃথক সকেটে প্রেরণের জন্য কীভাবে পাবেন ?
ক্র্যাশলোট

2
আপনার প্রশ্নের উত্তর সহ সম্পাদিত। মূলত এটি socket.idআপনার সকেট অবজেক্ট থেকে।
soyuka

স্বতন্ত্রকে প্রেরণের জন্য আপনি সকেটটি ব্যবহার করতে পারেন mit কে পাঠায় তা ফেরত পাঠাতে পারেন বা কনসেক্টেড ক্লায়েন্টদের দলবদ্ধ করতে পারেন এবং ক্র্যাশলোট করতে পারেন
উজওয়াল hakাকাল

12

0.9.x থেকে 1.x এ কী পরিবর্তন হয়েছে সে সম্পর্কে এখানে আরও সম্পূর্ণ উত্তর দেওয়া হয়েছে

 // send to current request socket client
 socket.emit('message', "this is a test");// Hasn't changed

 // sending to all clients, include sender
 io.sockets.emit('message', "this is a test"); // Old way, still compatible
 io.emit('message', 'this is a test');// New way, works only in 1.x

 // sending to all clients except sender
 socket.broadcast.emit('message', "this is a test");// Hasn't changed

 // sending to all clients in 'game' room(channel) except sender
 socket.broadcast.to('game').emit('message', 'nice game');// Hasn't changed

 // sending to all clients in 'game' room(channel), include sender
 io.sockets.in('game').emit('message', 'cool game');// Old way, DOES NOT WORK ANYMORE
 io.in('game').emit('message', 'cool game');// New way
 io.to('game').emit('message', 'cool game');// New way, "in" or "to" are the exact same: "And then simply use to or in (they are the same) when broadcasting or emitting:" from http://socket.io/docs/rooms-and-namespaces/

 // sending to individual socketid, socketid is like a room
 io.sockets.socket(socketid).emit('message', 'for your eyes only');// Old way, DOES NOT WORK ANYMORE
 socket.broadcast.to(socketid).emit('message', 'for your eyes only');// New way

আমি @ সায়ুকা পোস্টটি সম্পাদনা করতে চেয়েছিলাম তবে আমার সম্পাদনাটি পিয়ার-রিভিউ দ্বারা প্রত্যাখ্যাত হয়েছিল।


6

সম্প্রচার.ইমিটটি অন্য সমস্ত ক্লায়েন্টকে (প্রেরক ব্যতীত) প্রেরণ করে

socket.on('cursor', function(data) {
  socket.broadcast.emit('msg', data);
});

6

চিটশিট নির্গত করুন

io.on('connect', onConnect);

function onConnect(socket){

  // sending to the client
  socket.emit('hello', 'can you hear me?', 1, 2, 'abc');

  // sending to all clients except sender
  socket.broadcast.emit('broadcast', 'hello friends!');

  // sending to all clients in 'game' room except sender
  socket.to('game').emit('nice game', "let's play a game");

  // sending to all clients in 'game1' and/or in 'game2' room, except sender
  socket.to('game1').to('game2').emit('nice game', "let's play a game (too)");

  // sending to all clients in 'game' room, including sender
  io.in('game').emit('big-announcement', 'the game will start soon');

  // sending to all clients in namespace 'myNamespace', including sender
  io.of('myNamespace').emit('bigger-announcement', 'the tournament will start soon');

  // sending to individual socketid (private message)
  socket.to(<socketid>).emit('hey', 'I just met you');

  // sending with acknowledgement
  socket.emit('question', 'do you think so?', function (answer) {});

  // sending without compression
  socket.compress(false).emit('uncompressed', "that's rough");

  // sending a message that might be dropped if the client is not ready to receive messages
  socket.volatile.emit('maybe', 'do you really need it?');

  // sending to all clients on this node (when using multiple nodes)
  io.local.emit('hi', 'my lovely babies');

};

4

কক্ষের মধ্যে থাকা নেমস্পেসগুলির জন্য কোনও ঘরে ক্লায়েন্টের তালিকাটি লুপিং (নাভির উত্তরের অনুরূপ) আমি খুঁজে পেয়েছি যে দুটি কার্যকর পদ্ধতির মধ্যে আমি কাজ করব। অন্যটি বাদ দেওয়া ব্যবহার করা। ই জি

socket.on('message',function(data) {
    io.of( 'namespace' ).in( data.roomID ).except( socket.id ).emit('message',data);
}

7
1.x: /
কলিজ


1

আরও ডকুমেন্টেশন জন্য তালিকা আপডেট।

socket.emit('message', "this is a test"); //sending to sender-client only
socket.broadcast.emit('message', "this is a test"); //sending to all clients except sender
socket.broadcast.to('game').emit('message', 'nice game'); //sending to all clients in 'game' room(channel) except sender
socket.to('game').emit('message', 'enjoy the game'); //sending to sender client, only if they are in 'game' room(channel)
socket.broadcast.to(socketid).emit('message', 'for your eyes only'); //sending to individual socketid
io.emit('message', "this is a test"); //sending to all clients, include sender
io.in('game').emit('message', 'cool game'); //sending to all clients in 'game' room(channel), include sender
io.of('myNamespace').emit('message', 'gg'); //sending to all clients in namespace 'myNamespace', include sender
socket.emit(); //send to all connected clients
socket.broadcast.emit(); //send to all connected clients except the one that sent the message
socket.on(); //event listener, can be called on client to execute on server
io.sockets.socket(); //for emiting to specific clients
io.sockets.emit(); //send to all connected clients (same as socket.emit)
io.sockets.on() ; //initial connection from a client.

আশাকরি এটা সাহায্য করবে.


'io.sockets.emit' 'io.emit' সমান, 'সকেট.ইমিট'
ডক্টর.হো।

'সকেট.টো' ('গেম')। ইমিট 'সমান' সকেট.ব্রোডকাস্ট.টো ('গেম')। ইমিট 'তাই উপরের মন্তব্যটি ভুল
ডক্টর.হো।

0

এই কোডিং ব্যবহার করুন

io.sockets.on('connection', function (socket) {

    socket.on('mousemove', function (data) {

        socket.broadcast.emit('moving', data);
    });

এই সকেট.বরোডকাস্ট.মিট () নির্গত হওয়া সার্ভার ব্যতীত ফাংশনটিতে সর্বদা নিঃসরণ করবে



আমার একাধিক ফাইলে আমার অ্যাপ্লিকেশন রয়েছে এবং আমি প্রিপ্রস বা কোয়ালার সাথে তাদের প্রয়োজনীয়তার পরিবর্তে একত্রীকরণ করি, এটি আমাকে তাদের সমস্ত পরিবর্তনগুলি ভাগ করতে দেয়
স্টিল ব্রেন

1
বা ioবিশ্বব্যাপী হিসাবে রয়েছে
ভডোরকোয়েস্ট

0

আমি নেমস্পেস এবং কক্ষগুলি ব্যবহার করছি - আমি পেয়েছি

socket.broadcast.to('room1').emit('event', 'hi');

যেখানে কাজ করতে

namespace.broadcast.to('room1').emit('event', 'hi');

না

(অন্য কারও কি সমস্যার মুখোমুখি হওয়া উচিত)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.