2015-06-25 4 views
5

मैं elixir के साथ ExIrc में दो सर्वर से कनेक्ट करना चाहता हूं, और मुझे ऐसा करने का कोई आसान समाधान नहीं मिल रहा है। मैं elixir के लिए काफी नया हूँ, और जो कुछ मैं देख सकता हूं कि मैं कर सकता हूं वह दो ऐप्स चलाने के लिए 'छाता' का उपयोग करता है और उन्हें एक-दूसरे के साथ इंटरफेस करता है? (मैं एक आईआरसी सर्वर से कनेक्ट करने के लिए एक ऐप का उपयोग करना चाहता हूं, और यदि इसमें कुछ निश्चित शब्द हैं, तो डेटा को पार्स करें और किसी अन्य आईआरसी सर्वर को भेजें)ExIrc (Elixir) के साथ कई आईआरसी सर्वर से कनेक्ट करें?

+1

'ExIrc' के कोड को बहुत तेज़ी से देखते हुए ऐसा लगता है कि क्लाइंट 'जेनसेवर' है, इसलिए आपको केवल कई क्लाइंट शुरू करने और उन्हें विभिन्न सर्वर से कनेक्ट करने में सक्षम होना चाहिए। –

+0

@ PawełObrok हम्म। जैसा कि मैंने कहा था कि मैं elixir के लिए नया हूँ, क्या आपको कोई विचार है कि कई क्लाइंट कैसे शुरू करें? (खेद है कि अगर मैं यहां इतनी गूंगा लग रहा हूं: पी) – desu

उत्तर

2

तो एक क्लाइंट को कनेक्ट करने के लिए आप कुछ ऐसा कर सकते हैं:

ExIrc.start! 
{:ok, client} = ExIrc.Client.start_link 
{:ok, handler} = ExampleHandler.start_link(nil) 
ExIrc.Client.add_handler(client, handler) 
ExIrc.Client.connect!(client, "chat.freenode.net", 6667) 

मैं रीडमे के सुझाव के अनुसार ExampleHandler का उपयोग कर रहा हूं। अब आप की तरह कुछ करते हैं:

pass = "" 
nick = "my_nick" 
ExIrc.Client.logon(client, pass, nick, nick, nick) 
ExIrc.Client.join(client, "#elixir-lang") 

आप कंसोल के लिए उत्पादन किया जा रहा है #elixir-lang से संदेश देखने लगेंगे - कि ExampleHandler कैसे कार्यान्वित किया जाता है, तो आप शायद उसके स्थान पर कुछ और ही लागू होगा।

अब कुछ भी नहीं है कि यह एक दूसरी बार ऐसा करने से आप को रोक रहा है:

{:ok, client2} = ExIrc.Client.start_link 
{:ok, handler2} = ExampleHandler.start_link(nil) 
# and so on 

एक ग्राहक client2 है कि एक ही है या किसी अन्य सर्वर से कनेक्ट है बनाने के लिए। आप जो चाहते हैं उसे प्राप्त करने के लिए आपको केवल एक हैंडलर लिखना होगा जो client से संदेशों को ExIrc.Client.msg(client2, ...) पर कॉल करके अन्य क्लाइंट को पोस्ट करने के लिए प्रतिक्रिया देगा।

+0

@ ओब्रोक हम्म तो मैंने वास्तव में सोचा कि यह काम करेगा लेकिन यह सिर्फ मुझे फेंक रहा है {: त्रुटि, {: पहले से शुरू किया गया, पीआईडी}} - अजीब – desu

+0

ओह, इसके बारे में खेद है। ऐसा लगता है कि 'ExIrc.start_client!' शुरू होता है और कार्यकर्ता को अपने पर्यवेक्षण पेड़ में लगा देता है, आपके पास केवल एक ग्राहक हो सकता है। आप मैन्युअल रूप से 'ExIrc.Client.start_link' के साथ क्लाइंट प्रारंभ कर सकते हैं लेकिन आप शायद यह सुनिश्चित करना चाहते हैं कि आप उन्हें अपने पर्यवेक्षण वृक्ष में लगा दें। मैं जवाब अपडेट करूंगा। –

संबंधित मुद्दे