2019 এ স্বাগতম, যেখানে টাইপস্ক্রিপ্ট ধীরে ধীরে বিশ্বজুড়ে নেয়। অন্যান্য উত্তরগুলি এখনও পুরোপুরি বৈধ। যাইহোক, আমি আপনাকে কেবল একটি টাইপ করা পরিবেশে এটি কীভাবে সেট আপ করতে পারি তা আপনাকে দেখাতে চেয়েছিলাম।
যদি আপনি এখনও না। আপনার প্রথমে কিছু নির্ভরতা ইনস্টল করা উচিত
(যেমন কমান্ডলাইন থেকে npm install <dependency-goes-here> --save-dev
:)
"devDependencies": {
...
"@types/express": "^4.17.2",
...
"@types/socket.io": "^2.1.4",
"@types/socket.io-client": "^1.4.32",
...
"ts-node": "^8.4.1",
"typescript": "^3.6.4"
}
আমি ES6 আমদানি ব্যবহার করে আমদানিগুলি সংজ্ঞায়িত করেছি (যা আপনার tsconfig.json
ফাইলটিতে প্রথমে সক্ষম করা উচিত ))
import * as SocketIO from "socket.io";
import * as http from "http";
import * as https from "https";
import * as express from "express";
যেহেতু আমি টাইপসক্রিপ্টটি ব্যবহার করি আমার এখন পুরো টাইপিং আছে, এই বিষয়গুলির সাথে আমি যা করি তা নিয়ে।
সুতরাং, স্পষ্টতই, প্রথমে আপনার একটি HTTP সার্ভার দরকার:
const handler = express();
const httpServer = (useHttps) ?
https.createServer(serverOptions, handler) :
http.createServer(handler);
আমার ধারণা আপনি ইতিমধ্যে সমস্ত কিছু করে ফেলেছেন। এবং আপনি সম্ভবত ইতিমধ্যে এটিতে সকেট আইও যুক্ত করেছেন:
const io = SocketIO(httpServer);
httpServer.listen(port, () => console.log("listening") );
io.on('connection', (socket) => onSocketIoConnection(socket));
এর পরে, নতুন সকেট-আইও সংযোগগুলি পরিচালনা করার জন্য, আপনি টাইপটিকে SocketIO.Socket
তার প্যারামিটারে রাখতে পারেন।
function onSocketIoConnection(socket: SocketIO.Socket) {
// I usually create a custom kind of session object here.
// then I pass this session object to the onMessage and onDisconnect methods.
socket.on('message', (msg) => onMessage(...));
socket.once('disconnect', (reason) => onDisconnect(...));
}
এবং শেষ অবধি, আমাদের কাছে এখন সম্পূর্ণ টাইপিং রয়েছে বলে, আমরা সহজেই অনুমান করেই আমাদের সকেট থেকে আইপিটি উদ্ধার করতে পারি:
const ip = socket.conn.remoteAddress;
console.log(`client ip: ${ip}`);