मुख्य सामग्री पर जाएं

Gateway लॉक

अंतिम अपडेट: 2025-12-11

क्यों

  • सुनिश्चित करें कि एक ही होस्ट पर प्रति बेस पोर्ट केवल एक Gateway इंस्टेंस चले; अतिरिक्त Gateway को पृथक प्रोफ़ाइल और अद्वितीय पोर्ट का उपयोग करना चाहिए।
  • क्रैश/SIGKILL के बाद भी स्थायी लॉक फ़ाइलें छोड़े बिना सुरक्षित रूप से काम करे।
  • नियंत्रण पोर्ट पहले से व्यस्त होने पर स्पष्ट त्रुटि के साथ तुरंत विफल हो।

तंत्र

  • Gateway स्टार्टअप के तुरंत बाद WebSocket लिस्नर (डिफ़ॉल्ट ws://127.0.0.1:18789) को एक विशेष TCP लिस्नर का उपयोग करके बाइंड करता है।
  • यदि बाइंड EADDRINUSE के साथ विफल होता है, तो स्टार्टअप GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>") फेंकता है।
  • OS किसी भी प्रक्रिया समाप्ति पर—क्रैश और SIGKILL सहित—लिस्नर को स्वचालित रूप से रिलीज़ कर देता है; अलग लॉक फ़ाइल या क्लीनअप चरण की आवश्यकता नहीं होती।
  • शटडाउन पर Gateway पोर्ट को शीघ्र मुक्त करने के लिए WebSocket सर्वर और अंतर्निहित HTTP सर्वर को बंद कर देता है।

त्रुटि सतह

  • यदि कोई अन्य प्रक्रिया पोर्ट को होल्ड कर रही है, तो स्टार्टअप GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>") फेंकता है।
  • अन्य बाइंड विफलताएँ GatewayLockError("failed to bind gateway socket on ws://127.0.0.1:<port>: …") के रूप में प्रकट होती हैं।

परिचालन नोट्स

  • यदि पोर्ट किसी अन्य प्रक्रिया द्वारा व्यस्त है, तो त्रुटि वही रहती है; पोर्ट खाली करें या openclaw gateway --port <port> के साथ कोई अन्य चुनें।
  • macOS ऐप Gateway को स्पॉन करने से पहले अपना स्वयं का हल्का PID गार्ड बनाए रखता है; रनटाइम लॉक WebSocket बाइंड द्वारा प्रवर्तित होता है।