সকেটআইওর সাথে কোনও ক্লায়েন্টকে সংযোগ বিচ্ছিন্ন করার এবং আক্ষরিকভাবে সংযোগটি বন্ধ করার কোনও উপায় আছে কি? সুতরাং যদি কেউ আমার সার্ভারের সাথে সংযুক্ত থাকে, এবং আমি তাদের এবং আমার সার্ভারের মধ্যে সংযোগটি বন্ধ করতে চাই, তবে আমি কীভাবে তা করব?
সকেটআইওর সাথে কোনও ক্লায়েন্টকে সংযোগ বিচ্ছিন্ন করার এবং আক্ষরিকভাবে সংযোগটি বন্ধ করার কোনও উপায় আছে কি? সুতরাং যদি কেউ আমার সার্ভারের সাথে সংযুক্ত থাকে, এবং আমি তাদের এবং আমার সার্ভারের মধ্যে সংযোগটি বন্ধ করতে চাই, তবে আমি কীভাবে তা করব?
উত্তর:
সম্পাদনা: এটি এখন সম্ভব
আপনি এখন কেবল socket.disconnect()সার্ভারের দিকে কল করতে পারেন ।
আমার মূল উত্তর:
এটি এখনও সম্ভব নয়।
আপনারও যদি এটির প্রয়োজন হয় তবে এই বিষয়ে ভোট / মন্তব্য করুন ।
iptables), তত বেশি সংস্থান আপনি সংরক্ষণ করবেন। বেশিরভাগ ক্ষেত্রে, ক্লায়েন্টকে কেবল লাথি মেরে ফেলা যথেষ্ট হওয়া উচিত, যেহেতু সোকেটিও দ্রুত তা সংযুক্ত করে না, এবং যদি কেউ সত্যই আপনাকে ডস করতে চায় তবে তাদের অন্য উপায় রয়েছে (যেমন আপনার কাছ থেকে পৃষ্ঠা ডাউনলোড করা)।
socket.disconnect() সার্ভারের দিকে নয়, কেবল ক্লায়েন্টের পক্ষে ব্যবহার করা যেতে পারে।
Client.emit('disconnect')সার্ভারে সংযোগ বিচ্ছিন্ন ইভেন্টটি ট্রিগার করে তবে ক্লায়েন্টকে কার্যকরভাবে সংযোগ বিচ্ছিন্ন করে না। ক্লায়েন্ট বিচ্ছিন্নতা সম্পর্কে সচেতন নয়।
সুতরাং প্রশ্নটি রয়ে গেছে: কীভাবে কোনও ক্লায়েন্টকে সার্ভার দিক থেকে সংযোগ বিচ্ছিন্ন করতে বাধ্য করবেন?
Client.emit('disconnect')সাম্প্রতিক সকেট.আইও সংস্করণগুলির সাথে আপনাকে আর ম্যানুয়ালি কল করতে হবে না , এখন একটি সার্ভার-সাইড রয়েছে socket.disconnect()(আমার উত্তর দেখুন)।
socket.disconnect()সার্ভারের পাশেও ব্যবহার করা যেতে পারে।
disconnect()ফাংশন শেষ হয়ে যাওয়ার পরে কলব্যাকটিতে কিছু পরামিতিগুলি পাস করি তবে কী হবে ?
সার্ভারটি আপনার ক্লায়েন্টকে একটি বার্তা প্রেরণ করতে না পারার কারণেই এটি সংযোগ বিচ্ছিন্ন করতে পারে?
ক্লায়েন্টে:
socket.emit('forceDisconnect');
সার্ভারে:
socket.on('forceDisconnect', function(){
socket.disconnect();
});
আপনার সকেটের নামকৃত সকেট ধরে, ব্যবহার করুন:
socket.disconnect()
যারা এটি গুগলে পেয়েছেন তাদের জন্য - এই মুহুর্তে এখানে একটি সমাধান রয়েছে:
Socket.disconnect()ক্লায়েন্টকে কিক্স করে (সার্ভার-সাইড)। ক্লায়েন্টের সাথে সংযুক্ত থাকার কোনও সুযোগ নেই :)
disconnectইভেন্টটি সংযোগ বিচ্ছিন্ন হয়েছে কিনা তা শোনার জন্য । closeইভেন্টটিও হতে পারে , আমি যথেষ্ট নিশ্চিত নই। এটি সম্পর্কে আরও তথ্যের জন্য সকেট.আইওর ডকুমেন্টেশন দেখুন।
আজ সকালে পরীক্ষা করে দেখা যাচ্ছে এটি এখন:
socket.close()
আমার ক্ষেত্রে আমি অন্তর্নিহিত সংযোগটি ছিন্ন করতে চেয়েছিলাম যে ক্ষেত্রে আমাকে ফোন socket.disconnect(true)করতে হয়েছিল যেহেতু আপনি দেখতে পাচ্ছেন যে এখানে উত্স থেকে প্রয়োজন
সকেট.আইও সংঘবদ্ধ / সংযোগ / হৃদস্পন্দনগুলি পরীক্ষা করতে যাতে ইভেন্টগুলি করতে পারে তে ইভেন্টইমিটার প্যাটার্নটি ব্যবহার করে। Client.emit('disconnect');
এটি আমার পক্ষে কার্যকর হয়নি :
`socket.disconnect()`
এটি আমার পক্ষে কাজ করেছে:
socket.disconnect(true)
হস্তান্তর trueহ'ল ক্লায়েন্টের সাথে অন্তর্নিহিত সংযোগটি বন্ধ করে দেবে এবং ক্লায়েন্টের সুনির্দিষ্ট নয় নামমাত্র স্থান সকেট আইও ডকুমেন্টেশনের সাথে সংযুক্ত রয়েছে ।
উদাহরণ ব্যবহারের ক্ষেত্রে: ক্লায়েন্ট অবৈধ অ্যাক্সেস টোকেন (অ্যাক্সেস টোকেন ওয়েব সকেট সার্ভারের সাথে সংযোগের প্যারামগুলির সাথে হস্তান্তরিত) দিয়ে ওয়েব সকেট সার্ভারের সাথে সংযুক্ত করে। ওয়েব সকেট সার্ভার ক্লায়েন্টকে তার অবৈধ অ্যাক্সেস টোকেনের কারণে সংযোগটি বন্ধ করতে চলেছে তা অবহিত করে:
// (1) the server code emits
socket.emit('invalidAccessToken', function(data) {
console.log(data); // (4) server receives 'invalidAccessTokenEmitReceived' from client
socket.disconnect(true); // (5) force disconnect client
});
// (2) the client code listens to event
// client.on('invalidAccessToken', (name, fn) => {
// // (3) the client ack emits to server
// fn('invalidAccessTokenEmitReceived');
// });
আপনি socket = undefinedকোন সকেট সংযুক্ত করেছেন তা মুছে ফেলতে পারেন। সুতরাং যখন সংযুক্ত করতে চান সকেট (ইউআরএল)
সুতরাং এটি দেখতে হবে
const socketClient = require('socket.io-client');
let socket;
// Connect to server
socket = socketClient(url)
// When want to disconnect
socket = undefined;
একটি অ্যারেতে নতুন সকেট সংযোগ যুক্ত করুন এবং তারপরে আপনি যখন সমস্তটি বন্ধ করতে চান - সেগুলি দিয়ে লুপ করুন এবং সংযোগ বিচ্ছিন্ন করুন। (সার্ভার পাশ)
var socketlist = [];
io.sockets.on('connection', function (socket) {
socketlist.push(socket);
//...other code for connection here..
});
//close remote sockets
socketlist.forEach(function(socket) {
socket.disconnect();
});