ฉันพบโครงการนี้: http://code.google.com/p/standalonewebsocketserver/สำหรับเซิร์ฟเวอร์ WebSocket แต่ฉันต้องติดตั้งไคลเอนต์ WebSocket ใน python ฉันต้องรับคำสั่งบางอย่างจาก XMPP ในเซิร์ฟเวอร์ WebSocket
ฉันพบโครงการนี้: http://code.google.com/p/standalonewebsocketserver/สำหรับเซิร์ฟเวอร์ WebSocket แต่ฉันต้องติดตั้งไคลเอนต์ WebSocket ใน python ฉันต้องรับคำสั่งบางอย่างจาก XMPP ในเซิร์ฟเวอร์ WebSocket
คำตอบ:
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()
pip install
งานได้ดีบน windows! ฉันใช้ ActivePython 2.7 และรันpip install websocket-client
และใช้งานได้จริง ปัญหาเดียวคือการpython
ปะทะกับ cygwin python ดังนั้นฉันต้องวิ่งอย่างชัดเจน/cygdrive/C/Python27/python
เพื่อรับ ActivePython
sudo
โธ่ไม่ได้ใช้ ใช้--user
.
Autobahn มีการใช้งานไคลเอนต์ websocket ที่ดีสำหรับ Python รวมถึงตัวอย่างที่ดี ฉันทดสอบสิ่งต่อไปนี้กับเซิร์ฟเวอร์ Tornado WebSocket และใช้งานได้
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()
from autobahn.twisted.websocket import WebSocketClientFactory, WebSocketClientProtocol, connectWS
เป็นการนำเข้าที่ถูกต้องสำหรับออโต้บาห์นเวอร์ชันใหม่กว่า stackoverflow.com/questions/21381454/…
ตั้งแต่ผมได้รับการทำบิตของการวิจัยในสาขาที่เมื่อเร็ว ๆ นี้ ( ม.ค. '12) ที่ลูกค้ามีแนวโน้มมากที่สุดเป็นจริง: WebSocket สำหรับงูหลาม รองรับซ็อกเก็ตปกติที่คุณสามารถเรียกแบบนี้:
ws = EchoClient('http://localhost:9000/ws')
client
สามารถThreaded
หรืออยู่บนพื้นฐานIOLoop
จากพายุทอร์นาโดโครงการ สิ่งนี้จะช่วยให้คุณสร้างไคลเอนต์การเชื่อมต่อพร้อมกันหลายตัว มีประโยชน์หากคุณต้องการทำการทดสอบความเครียด
ลูกค้ายังตีแผ่onmessage
, opened
และclosed
วิธีการ (แบบ WebSocket).
web2py มี comet_messaging.py ซึ่งใช้ Tornado สำหรับ websockets ดูตัวอย่างที่นี่: http://vimeo.com/18399381และที่นี่ vimeo com / 18232653