我發現這個項目:http://code.google.com/p/standalonewebsocketserver/爲websocket服務器,但我需要在python中實現一個websocket客戶端,更確切地說,我需要從我的websocket服務器中的xmpp接收一些命令。是否有爲python實現的WebSocket客戶端?
回答
- 看看http://code.google.com/p/pywebsocket/下的echo客戶端這是一個Google項目。
- 在github上的一個好的搜索是:https://github.com/search?type=Everything&language=python&q=websocket&repo=&langOverride=&x=14&y=29&start_value=1它返回客戶端和服務器。
- Bret Taylor還在Tornado(Python)上實現了web套接字。他的博客文章位於:Web Sockets in Tornado,客戶端實施API顯示在客戶端支持部分的tornado.websocket。
但我需要一個沒有龍捲風的python web sobcket – diegueus9 2011-01-04 16:10:41
我剛剛編輯了答案。看看github上的搜索結果,有很多實現。 – 2011-01-04 18:32:13
@sw。產品編號3無效,因爲它不是WebSocket客戶端,而是WebSocket服務器。 – 2014-03-20 19:26:44
的web2py具有comet_messaging.py,它採用了龍捲風的WebSockets在這裏看看一個例子:http://vimeo.com/18399381這裏VIMEO。 com/18232653
由於我最近在這方面做了一些研究(1月,'12),最有前途的客戶實際上是:WebSocket for Python。它支持正常的插座,你可以這樣調用:
ws = EchoClient('http://localhost:9000/ws')
的client
可以Threaded
或Tornado項目基於IOLoop
。這將允許您創建一個多併發連接客戶端。如果你想運行壓力測試,這很有用。
客戶端還公開onmessage
,opened
和closed
方法。 (WebSocket風格)。
關於併發性:我們已經測試了高達60k的WS傳出連接和高速公路服務器到高達180k WS連接的高速公路客戶端。 在Windows上,使用Twisted running IOCP(IO Completion Ports)reactor對此進行了測試,並在FreeBSD上使用kqueue reactor對其進行了測試。 聲明:我是Autobahn的作者。 – oberstet 2012-01-31 19:15:10
談到數字,在我身邊,我用Tornado Websocket(和WS-for-py)做了一些擴展測試,我很容易獲得15k連接。無論如何,對於測試來說都不是那麼好, – kiddouk 2012-02-02 07:55:09
Autobahn爲Python提供了一個很好的websocket客戶端實現以及一些很好的例子。我使用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()
嘿克里斯,你知道如何使用這個高速公路websocket服務器強制斷開客戶端從服務器端?我必須打電話來做那個功能? – Johnydep 2012-09-08 21:13:36
嘿,@Johnydep是的,我相信這是規範的一部分,這兩個websocket連接的參與者都可以啓動「關閉」。不要引用我的意思。無論如何,我看了看源代碼,並且有:「dropConnection」和「sendClose」我只是插入並測試它們:) – chrisallick 2012-10-15 20:52:42
'from autobahn.twisted.websocket import WebSocketClientFactory,WebSocketClientProtocol,connectWS'是正確的導入爲新版本的高速公路。 http://stackoverflow.com/questions/21381454/autobahn-cannot-import-name-error – evan54 2015-10-24 21:58:26
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 "Reeiving..."
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上很容易使用:( – 2013-10-09 17:31:10
@SSHThis'pip install'在windows上工作正常!我使用的是ActivePython 2.7並運行'pip install websocket-client',並且它工作正常。問題是'python'與cygwin python發生了衝突,所以我不得不顯式運行'/ cygdrive/C/Python27/python'來獲取ActivePython – 2013-12-12 00:35:07
@bryan狩獵如何處理服務器斷開連接的情況,錯誤 - 寫入一個封閉的管道/套接字/ FD(可能是客戶端斷開連接)!!! – 2016-04-20 08:54:36
- 1. 是否有爲.NET實現的WebSocket客戶端?
- 2. 是否有Python ebXML客戶端?
- 3. 是否有Kafka Connect Python客戶端?
- 4. Golang websocket客戶端
- 5. Python 3 websocket客戶端,永遠運行
- 6. Websocket客戶端Python禁用輸出
- 7. 使用Python websocket-客戶端多線程
- 8. 在Python中實現SAML客戶端
- 9. Python UPnP/IGD客戶端實現?
- 10. 用C++編寫的SIP Websocket客戶端實現
- 11. Haskell中的Websocket客戶端?
- 12. Erlang的Websocket客戶端
- 13. Lua中的WebSocket客戶端
- 14. PHP中的WebSocket客戶端?
- 15. 是否有一個用於node.js的服務器端Websocket客戶端?
- 16. 如何使用Java EE 7 WebSocket實現推送到客戶端?
- 17. 如何使用autobahn asyncio實現交互式websocket客戶端?
- 18. 的Java的WebSocket客戶端的lib問題:NV-的WebSocket客戶端sendBinary
- 19. 檢測客戶端的redis websocket是否發生重新連接
- 20. 什麼是實現python TCP客戶端的最佳方式?
- 21. Jetty - SSL Websocket客戶端
- 22. 需要Java websocket客戶端
- 23. Raspberry Pi2的命令行websocket客戶端 - 沒有瀏覽器需要實現?
- 24. 爲Webservice客戶端實現ActiveRecord
- 25. FTP客戶端java實現
- 26. 實現DHCP客戶端
- 27. 實現COMET客戶端
- 28. 客戶端接口實現
- 29. ActiveSync客戶端Java實現
- 30. Java SMPP客戶端實現
嘗試高速公路? http://www.tavendo.de/autobahn/ – 2012-01-10 08:16:34
由於Autobahn基於Twisted,所以Twisted對XMPP也有很好的支持也是值得注意的,例如http://metajack.im/2008/09/ 04/get-twisted-on-xmpp ---未來的扭曲字/ 因此,您可以在一個Twisted實例上運行WebSockets + XMPP的高速緩存。 聲明:我是Autobahn的作者。 – oberstet 2012-01-31 19:21:37