আমি একটি নির্দিষ্ট সকেট আইডিতে ডেটা প্রেরণ করতে চাই।
আমরা পুরানো সংস্করণগুলিতে এটি করতে সক্ষম হব:
io.sockets.socket(socketid).emit('message', 'for your eyes only');
আমি সকেট.আইও 1.0 তে অনুরূপ কিছু করতে কীভাবে যাব?
আমি একটি নির্দিষ্ট সকেট আইডিতে ডেটা প্রেরণ করতে চাই।
আমরা পুরানো সংস্করণগুলিতে এটি করতে সক্ষম হব:
io.sockets.socket(socketid).emit('message', 'for your eyes only');
আমি সকেট.আইও 1.0 তে অনুরূপ কিছু করতে কীভাবে যাব?
উত্তর:
সকেট.ইও 1.0 এ তারা এর জন্য আরও ভাল উপায় সরবরাহ করে। প্রতিটি সকেট স্বয়ংক্রিয়ভাবে স্ব আইডির মাধ্যমে একটি ডিফল্ট ঘরে যোগদান করে। দস্তাবেজগুলি পরীক্ষা করুন: http://sket.io/docs/rooms-and-namespaces/#default-room
সুতরাং আপনি নিম্নলিখিত কোড সহ আইডি দ্বারা একটি সকেটে প্রসারণ করতে পারেন:
io.to(socketid).emit('message', 'for your eyes only');
সকেট.ইও 1.0 এ আপনি নিম্নলিখিত কোড সহ এটি করতে পারেন:
if (io.sockets.connected[socketid]) {
io.sockets.connected[socketid].emit('message', 'for your eyes only');
}
হালনাগাদ:
@ মোস্তফাডোকুমাকের উত্তরে আরও ভাল সমাধান রয়েছে।
@ মুস্তফা ডকুমাক এবং @ করিউস ইতিমধ্যে যথেষ্ট তথ্য সরবরাহ করেছেন, আমি কীভাবে আপনি সকেট আইডি পেতে পারেন তা যোগ করছি।
সকেট আইডি পেতে সকেট আইডি ব্যবহার করুন :
var chat = io.of("/socket").on('connection',onSocketConnected);
function onSocketConnected(socket){
console.log("connected :"+socket.id);
}
আপনি যদি একটি নেমস্পেস ব্যবহার করেছেন তবে আমি দেখতে পেয়েছি যে নিম্নলিখিত কাজ করে:
//Defining the namespace <br>
var nsp = io.of('/my-namespace');
//targeting the message to socket id <br>
nsp.to(socket id of the intended recipient).emit('private message', 'hello');
নেমস্পেসগুলি সম্পর্কে আরও: http://sket.io/docs/rooms-and-namespaces/
আমি বিশ্বাস করি @ করিয়াস এবং @ মুস্তাফা ডকুমাক উভয়ই সমাধানগুলি সরবরাহ করেছেন যা ভালভাবে কাজ করে। পার্থক্যটি হ'ল @ মুস্তাফা ডকুমাকাসের সমাধানের সাথে বার্তাটি কেবল একটি নির্দিষ্ট ক্লায়েন্টকেই নয়, একটি ঘরে প্রচার করা হয়।
স্বীকৃতি চাওয়ার সময় পার্থক্যটি উল্লেখযোগ্য difference
io.sockets.connected[socketid].emit('message', 'for your eyes only', function(data) {...});
প্রত্যাশিত হিসাবে কাজ করে, যখন
io.to(socketid).emit('message', 'for your eyes only', function(data) {...});
সঙ্গে ব্যর্থ
Error: Callbacks are not supported when broadcasting
নোড.জেজেস -> সকেট.ইও -> ডাউনলোড করার জন্য একটি চ্যাটের উদাহরণ রয়েছে এটি লাইনটিতে আটকান (সংযোগে আইও) অংশে .. আমি এই কোডটি ব্যবহার করি যা 100% কাজ করে
io.on('connection', function(socket){
socket.on('chat message', function(msg){
console.log(socket.id);
io.to(socket.id).emit('chat message', msg+' you ID is:'+socket.id);
});
});