Tôi đã tìm thấy dự án này: http://code.google.com/p/standalonewebsocketserver/ cho máy chủ WebSocket, nhưng tôi cần triển khai ứng dụng khách WebSocket trong python, chính xác hơn là tôi cần nhận một số lệnh từ XMPP trong máy chủ WebSocket của mình.
Tôi đã tìm thấy dự án này: http://code.google.com/p/standalonewebsocketserver/ cho máy chủ WebSocket, nhưng tôi cần triển khai ứng dụng khách WebSocket trong python, chính xác hơn là tôi cần nhận một số lệnh từ XMPP trong máy chủ WebSocket của mình.
Câu trả lời:
http://pypi.python.org/pypi/websocket-client/
Dễ sử dụng một cách kỳ lạ.
sudo pip install websocket-client
Mã khách hàng mẫu:
#!/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()
Mã máy chủ mẫu:
#!/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
hoạt động tốt trên windows! Tôi đang sử dụng ActivePython 2.7 và đã chạy pip install websocket-client
và nó chỉ hoạt động. Vấn đề duy nhất được rằng python
đụng độ với python Cygwin, vì vậy tôi đã phải chạy một cách rõ ràng /cygdrive/C/Python27/python
để có được ActivePython
sudo
. Sử dụng --user
.
Autobahn có một triển khai ứng dụng khách websocket tốt cho Python cũng như một số ví dụ điển hình. Tôi đã thử nghiệm phần sau với máy chủ Tornado WebSocket và nó hoạt động.
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
là cách nhập chính xác cho các phiên bản autobahn mới hơn. stackoverflow.com/questions/21381454/…
Vì tôi đã thực hiện một chút nghiên cứu trong lĩnh vực đó gần đây (tháng 1, '12), khách hàng hứa hẹn nhất thực sự là: WebSocket cho Python . Nó hỗ trợ một ổ cắm thông thường mà bạn có thể gọi như thế này:
ws = EchoClient('http://localhost:9000/ws')
Các client
thể Threaded
hoặc dựa trên IOLoop
từ Tornado dự án. Điều này sẽ cho phép bạn tạo một máy khách nhiều kết nối đồng thời. Hữu ích nếu bạn muốn chạy các bài kiểm tra căng thẳng.
Máy khách cũng hiển thị onmessage
, opened
và closed
các phương thức. (Kiểu WebSocket).
web2py có comet_messaging.py, sử dụng Tornado cho websockets, hãy xem ví dụ ở đây: http://vimeo.com/18399381 và đây là vimeo. com / 18232653