प्रौद्योगिकी साझेदारी

python इत्यस्मिन् Socket.IO इत्यस्य विस्तृतं व्याख्यानम्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Socket.IO इदं WebSocket इत्यस्य आधारेण वास्तविकसमये, द्विपक्षीयं, घटना-आधारितं च संचारपुस्तकालयम् अस्ति । मूलतः Node.js कृते डिजाइनं कृतम् आसीत्, परन्तु अधुना पायथन् सहितं बहुषु भाषासु कार्यान्वयनम् अस्ति । पायथन् इत्यत्र .python-socketio एकं लोकप्रियं पुस्तकालयं यत् भवन्तं Socket.IO क्लायन्ट्-सर्वर्-इत्येतत् सुलभतया कार्यान्वितुं शक्नोति । इदं पुस्तकालयं विशेषतया जाल-अनुप्रयोगानाम् निर्माणार्थं उपयोगी भवति येषु वास्तविक-समय-दत्तांश-आदान-प्रदानस्य आवश्यकता भवति, यथा गपशप-अनुप्रयोगाः, वास्तविक-समय-सूचना-प्रणाल्याः, क्रीडाः इत्यादयः ।

Python-SocketIO इत्यस्य विशेषताः

  • द्विपक्षीयसञ्चारः: ग्राहकः सर्वरः च परस्परं सन्देशं प्रेषयितुं प्राप्तुं च शक्नुवन्ति।
  • स्वयमेव पुनः संयोजयन्तु: क्लायन्ट् स्वयमेव सर्वरेण सह पुनः संयोजितुं प्रयतितुं शक्नोति, यत् विशेषतया तदा उपयोगी भवति यदा जालम् अस्थिरं भवति ।
  • घटना चालिता: घटना-आधारितं प्रोग्रामिंग-प्रतिरूपं विकासं अधिकं सहजं लचीलं च करोति ।
  • बहुभाषिकसमर्थनम्: यद्यपि वयम् अत्र Python इत्यस्य विषये वदामः तथापि Socket.IO इकोसिस्टम् सुलभसमायोजनाय बहुभाषाणां मञ्चानां च समर्थनं करोति ।
  • WebSocket इत्यनेन सह सङ्गतं दीर्घकालं यावत् मतदानं च: प्राचीनब्राउजर्-मध्ये अपि ये WebSocket-समर्थनं न कुर्वन्ति, तेषु दीर्घ-मतदान-प्रौद्योगिक्याः माध्यमेन वास्तविक-समय-सञ्चारः प्राप्तुं शक्यते ।

प्रतिस्था

भवन्तः pip मार्गेण संस्थापयितुं शक्नुवन्तिpython-socketio

pip install python-socketio

यदि भवान् अपि जालसर्वरं निर्मातुम् इच्छति तथा च इदं Socket.IO सर्वररूपेण द्विगुणं कर्तुम् इच्छति तर्हि भवान् संस्थापनमपि कर्तुं शक्नोतिFlask-SocketIO(एकः Flask विस्तारः यः Flask तथा Socket.IO इत्येतयोः एकीकरणं करोति):

pip install Flask-SocketIO

Python-SocketIO इत्यस्य उपयोगेन सर्वरं रचयन्तु

निम्नलिखितम् सरलम् अस्तिFlask-SocketIOसर्वर उदाहरणं, यत् Flask framework इत्यस्य उपयोगं करोति तथा च Socket.IO इत्यस्य एकीकरणं करोति:

  1. from flask import Flask, render_template
  2. from flask_socketio import SocketIO, send
  3. app = Flask(__name__)
  4. app.config['SECRET_KEY'] = 'secret!'
  5. socketio = SocketIO(app)
  6. @app.route('/')
  7. def index():
  8. return render_template('index.html')
  9. @socketio.on('message')
  10. def handleMessage(msg):
  11. print('Message: ' + msg)
  12. send(msg, broadcast=True)
  13. if __name__ == '__main__':
  14. socketio.run(app)

अस्मिन् उदाहरणे सर्वरः शृणोति/ HTML पृष्ठं मार्गं कृत्वा रेण्डरं कुर्वन्तु (भवद्भिः स्वयमेव एतत् पृष्ठं निर्मातव्यं तथा च Socket.IO क्लायन्ट् पुस्तकालयस्य परिचयः करणीयः) ।सर्वरः आह्वानं अपि शृणोतिmessageevent, यदा एषा घटना प्राप्ता भवति तदा एतत् सन्देशसामग्रीम् मुद्रयति, सन्देशं च सर्वेभ्यः सम्बद्धेभ्यः क्लायन्ट्-भ्यः पुनः प्रसारयति ।

ग्राहिका

क्लायन्ट् पक्षे (प्रायः ब्राउजर् मध्ये JavaScript), भवद्भिः Socket.IO क्लायन्ट् पुस्तकालयं आयात्य सर्वरेण सह संयोजनं स्थापयितुं आवश्यकम् । अत्र सरलं क्लायन्ट् उदाहरणम् अस्ति :

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Socket.IO chat</title>
  5. <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.0/socket.io.js"></script>
  6. <script>
  7. var socket = io('http://localhost:5000');
  8. socket.on('connect', function() {
  9. console.log('Connected to the server!');
  10. });
  11. socket.on('message', function(msg) {
  12. console.log('Received message: ' + msg);
  13. });
  14. function sendMessage() {
  15. var input = document.getElementById('messageInput');
  16. socket.emit('message', input.value);
  17. input.value = '';
  18. }
  19. </script>
  20. </head>
  21. <body>
  22. <input type="text" id="messageInput" autocomplete="off" /><button onclick="sendMessage()">Send</button>
  23. </body>
  24. </html>

अस्मिन् उदाहरणे क्लायन्ट् सर्वरेण सह सम्बद्धः भवति, शृण्वन्messageघटनां परिभाषयति च कsendMessageसर्वरं प्रति सन्देशान् प्रेषयितुं कार्यं ।

सारांशं कुरुत

python-socketioतथाFlask-SocketIO वास्तविकसमयजाल-अनुप्रयोगानाम् निर्माणार्थं शक्तिशालिनः साधनानि प्रदाति । WebSockets तथा इवेण्ट्-ड्राइवन् प्रोग्रामिंग मॉडल् इत्यस्य लाभं गृहीत्वा, भवान् जटिल-वास्तविक-समय-अन्तरक्रियाशील-विशेषताः सहजतया कार्यान्वितुं शक्नोति ।

भविष्ये अपि प्रासंगिकसामग्रीम् अद्यतनं साझां च करिष्यामः।ध्यानं दातुं स्मर्यताम् !