পাইথনের জন্য কি কোনও ওয়েবসকেট ক্লায়েন্ট প্রয়োগ করা হয়েছে? [বন্ধ]


100

আমি এই প্রকল্পটি পেয়েছি: একটি ওয়েবসকেট সার্ভারের জন্য http://code.google.com/p/standalonewebsocketserver/ , তবে পাইথনে আমাকে একটি ওয়েবস্কট ক্লায়েন্ট প্রয়োগ করা দরকার, ঠিক আমার ওয়েবসকেট সার্ভারে এক্সএমপিপি থেকে কিছু কমান্ড গ্রহণ করা দরকার।


2
অটোবাহন চেষ্টা করে দেখুন? tavendo.de/autobahn
লেন

3
যেহেতু অটোবাহন ট্যুইস্টেড ভিত্তিক, তাই এটি লক্ষণীয়ও হতে পারে যে ট্যুইস্টেডকে এক্সএমপিপি-র জন্য খুব ভাল সমর্থন রয়েছে, যেমন মেটাজ্যাক.আইএম / ২০০৮ / ০৯ / ২০১৪ / আপনি এভাবে ওয়েবসকেটস + এক্সএমপিপি-র জন্য একটি বিচ্ছিন্ন দৃষ্টান্তের জন্য অটোবাহান পেতে পারেন । দাবি অস্বীকার: আমি অটোবাহনের লেখক।
ওভারস্টেট

উত্তর:


165

http://pypi.python.org/pypi/websocket-client/

হাস্যকরভাবে ব্যবহার করা সহজ।

 sudo pip install websocket-client

নমুনা ক্লায়েন্ট কোড:

#!/usr/bin/python

from websocket import create_connection
ws = create_connection("ws://localhost:8080/websocket")
print "Sending 'Hello, World'..."
ws.send("Hello, World")
print "Sent"
print "Receiving..."
result =  ws.recv()
print "Received '%s'" % result
ws.close()

নমুনা সার্ভার কোড:

#!/usr/bin/python
import websocket
import thread
import time

def on_message(ws, message):
    print message

def on_error(ws, error):
    print error

def on_close(ws):
    print "### closed ###"

def on_open(ws):
    def run(*args):
        for i in range(30000):
            time.sleep(1)
            ws.send("Hello %d" % i)
        time.sleep(1)
        ws.close()
        print "thread terminating..."
    thread.start_new_thread(run, ())


if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://echo.websocket.org/",
                                on_message = on_message,
                                on_error = on_error,
                                on_close = on_close)
    ws.on_open = on_open

    ws.run_forever()

4
@ এসএসএইচ pip installএটি উইন্ডোতে দুর্দান্ত কাজ করে! আমি অ্যাক্টিভ পাইথন ২.7 ব্যবহার করছি এবং দৌড়েছে pip install websocket-clientএবং এটি ঠিক কাজ করেছে। কেবল ইস্যুটি ছিল pythonসাইগউইন অজগরটির সাথে সংঘর্ষ, সুতরাং আমাকে স্পষ্টতই অ্যাক্টিভ পাইথন /cygdrive/C/Python27/pythonপেতে দৌড়াতে হয়েছিল
মার্ক লাকাটা

@ ব্রায়ান হান্ট কীভাবে মামলাটি পরিচালনা করবেন যখন সার্ভারটি সংযোগ বিচ্ছিন্ন করে দেয়, যেমন আমি ভাঙ্গা পাইপের ত্রুটি পেয়েছি - একটি বন্ধ পাইপ / সকেট / এফডি তে লিখিত (সম্ভবত ক্লায়েন্টটি সংযোগ বিচ্ছিন্ন হয়েছে) !!!
কানওয়াল প্রকাশ সিং

চলার সময় আমি কীভাবে কমান্ডলাইনে url পাস করব। উদাহরণস্বরূপ, যদি আমাকে কমান্ডলাইনে ডাব্লুএস ("ডাব্লুএস: // লোকালহোস্ট: 8080 / ওয়েবসকেট") দেওয়ার দরকার হয় .. ডাব্লুএস = তৈরি_সংযোগ ("ডাব্লুএস: // লোকালহোস্ট: 8080 / ওয়েবসকেট") .. যেমন ডাব্লুএস = তৈরি_সংযোগ (sys.argv)
সৌন্দর্য থিয়াগারাজন

1
@ কানওয়ালপ্রকাশসিংহ আপনি কি ক্লায়েন্ট সংযোগ বিচ্ছিন্ন সমস্যা সমাধান করেছেন?
জে

গীজ, ব্যবহার করবেন না sudo। ব্যবহার --user
পেরফি

22

পাইথনের জন্য অটোবনে একটি ভাল ওয়েবসকেট ক্লায়েন্ট প্রয়োগের পাশাপাশি কয়েকটি ভাল উদাহরণ রয়েছে। আমি টর্নেডো ওয়েবস্কট সার্ভার দিয়ে নিম্নলিখিতটি পরীক্ষা করেছিলাম এবং এটি কার্যকর হয়েছে worked

from twisted.internet import reactor
from autobahn.websocket import WebSocketClientFactory, WebSocketClientProtocol, connectWS


class EchoClientProtocol(WebSocketClientProtocol):

   def sendHello(self):
      self.sendMessage("Hello, world!")

   def onOpen(self):
      self.sendHello()

   def onMessage(self, msg, binary):
      print "Got echo: " + msg
      reactor.callLater(1, self.sendHello)


if __name__ == '__main__':

   factory = WebSocketClientFactory("ws://localhost:9000")
   factory.protocol = EchoClientProtocol
   connectWS(factory)
   reactor.run()

আরে ক্রিস, আপনি কি জানেন যে কীভাবে এই অটোবাহান ওয়েবসকেট সার্ভারটি ব্যবহার করে কোনও ক্লায়েন্ট সার্ভার দিক থেকে জোর করে সংযোগ বিচ্ছিন্ন করতে পারে ?? কোন ফাংশনটি করতে আমাকে ফোন করতে হবে?
জনডিপ

ওহে, @ জোহনিদ্ব্প হ্যাঁ, আমি বিশ্বাস করি যে এটি একটি অনুমানের অংশ যা ওয়েবসকেট সংযোগে অংশ নেওয়া উভয়ই "নিকটবর্তী" হতে পারে। যদিও আমাকে উদ্ধৃত করবেন না। যাইহোক, আমি উত্স কোডটি দেখেছি এবং সেখানে রয়েছে: "ড্রপকনেকশন" এবং "সেন্ডক্লোজ" আমি কেবল তাদের প্লাগ ইন করে পরীক্ষা করেছি :)
ক্রিসালিক

2
from autobahn.twisted.websocket import WebSocketClientFactory, WebSocketClientProtocol, connectWSস্বাবাহনের নতুন সংস্করণগুলির জন্য সঠিক আমদানি। stackoverflow.com/questions/21381454/...
evan54

1
আপনি যদি একটি নতুন এপিআই প্রবর্তন করতে যাচ্ছেন তবে কোডটি কী করছে তা সম্ভবত ব্যাখ্যা করা ভাল।
ব্যবহারকারী 650261

1
এটা কি WS সমর্থন করবে?
অরুণ

10

যেহেতু আমি ইদানীং সেই ক্ষেত্রে (জানুয়ারী, '12) নিয়ে কিছুটা গবেষণা করে চলেছি, সর্বাধিক প্রতিশ্রুতিবদ্ধ ক্লায়েন্ট হ'ল পাইথনের জন্য ওয়েবসকেট । এটি একটি সাধারণ সকেটকে সমর্থন করে যা আপনি এই জাতীয়ভাবে কল করতে পারেন:

ws = EchoClient('http://localhost:9000/ws')

clientহতে পারে Threadedবা এর উপর ভিত্তি করে IOLoopথেকে টর্নেডো প্রকল্পের। এটি আপনাকে একাধিক সমবর্তী সংযোগ ক্লায়েন্ট তৈরি করতে দেয়। স্ট্রেস টেস্ট চালাতে চাইলে দরকারী।

ক্লায়েন্টটি onmessage, openedএবং closedপদ্ধতিগুলিও প্রকাশ করে । (ওয়েবসকেট স্টাইল)।


1
সমাবর্তন সম্পর্কিত: আমরা 60 কে ডাব্লুএস বহির্গামী সংযোগ এবং অটোবাহান সার্ভার আগত 180 কে ডব্লিউএস সংযোগ পর্যন্ত পরীক্ষা করেছি। উইন্ডোজে, এটি টুইস্টেড চলমান আইওসিপি (আইও কমপ্লেশন পোর্টস) চুল্লি ব্যবহার করে পরীক্ষা করা হয়েছিল এবং ফ্রিবিএসডি-তে এটি কিউইউ চুল্লি ব্যবহার করে পরীক্ষা করা হয়েছিল। দাবি অস্বীকার: আমি অটোবাহনের লেখক।
oberstet

1
সংখ্যার কথা বলছি, আমার পক্ষে, আমি টর্নেডো ওয়েবসকেট (এবং ডাব্লুএস-ফর-পাই) এর সাথে কিছু বর্ধিত পরীক্ষা করেছি এবং আমি সহজেই 15 কে সংযোগ পেতে পারি। যাইহোক যাইহোক একটি পরীক্ষার জন্য তত বেশি নয় good
কিদৌক

0

ওয়েব টুপিতে কমেট_মেসেজিং.পি রয়েছে, যা ওয়েবসকেটের জন্য টর্নেডো ব্যবহার করে এখানে একটি উদাহরণ দেখুন: http://vimeo.com/18399381 এবং এখানে ভিমেও। com / 18232653


ভিডিওগুলি এ জাতীয় বিষয় ব্যাখ্যা করার জন্য একটি দুর্বল বাহন, দয়া করে এইচটিএমএল-ভিত্তিক ডকুমেন্টেশন বা টিউটোরিয়ালগুলিতে পোস্টিং বিবেচনা করুন।
ক্রিস উইথারস

0
  1. ইকো ক্লায়েন্টকে http://code.google.com/p/pywebsocket/ এর অধীনে একবার দেখে নিন এটি একটি গুগল প্রকল্প।
  2. গিথুব-এ একটি ভাল অনুসন্ধান হ'ল: https://github.com/search?type=Everything&language=python&q=websket&repo=&langOverride=&x=14&y=29&start_value=1 এটি ক্লায়েন্ট এবং সার্ভারগুলি প্রদান করে।
  3. ব্রেট টেলর টর্নেডো (পাইথন) এর উপরেও ওয়েব সকেট প্রয়োগ করেছিলেন। তার ব্লগ পোস্টটি: টর্নেডোতে ওয়েব সকেট এবং ক্লায়েন্ট প্রয়োগকারী এপিআই ক্লায়েন্টের পক্ষ সমর্থন বিভাগে টর্নেডো.ওবসকেটে প্রদর্শিত হয় ।

1
তবে আমার টর্নেডো ছাড়াই অজগরে একটি ওয়েব সোবকেট দরকার
ডায়াগিউস 9

@sw। আইটেম নম্বর 3 বৈধ নয় কারণ এটি কোনও ওয়েবসকেট ক্লায়েন্ট নয়, বরং একটি ওয়েবসকেট সার্ভার।
জোড়ান পাভলভিক

@ জোড়ানপাভলভিক দেখুন: টর্নেডোওয়েব.আর.ইন / স্টেবল / ওয়েবেসকেট এইচটিএমএলে এটির একটি ওয়েবসকেট ক্লায়েন্ট বাস্তবায়ন রয়েছে।
sw।

@sw। হ্যাঁ, তবে 3 পয়েন্টের লিঙ্কটি একটি অজগর সার্ভার এবং জাভাস্ক্রিপ্ট ক্লায়েন্টের। আপনার সদ্য পোস্ট হওয়া নতুন ইউআরএলটি দিয়ে এটি আপডেট করা উচিত এবং সন্ধানের জন্য ধন্যবাদ! এটি ঠিক আমি যা খুঁজছিলাম
জোড়ান পাভলভিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.