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"
}
मैंने ईएस 6 आयातों का उपयोग करते हुए आयातों को परिभाषित किया (जो आपको अपनी 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);
मुझे लगता है कि आप पहले ही वह सब कर चुके हैं। और आपने शायद इसमें पहले से सॉकेट io जोड़ा है:
const io = SocketIO(httpServer);
httpServer.listen(port, () => console.log("listening") );
io.on('connection', (socket) => onSocketIoConnection(socket));
अगला, नए सॉकेट-io कनेक्शन की हैंडलिंग के लिए, आप 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}`);