Я пытаюсь скопировать следующий код js в python3
var ws = new f("wss://10.20.3.33:11443/ext/remoteinput");
ws.binaryType = 'arraybuffer';
ws.onopen = function() {
const buffer = new ArrayBuffer(3);
const uint8 = new Uint8Array(buffer);
uint8.set([1, 204, 1]);
ws.send(uint8)
console.log("Message is sent...");
};
Я пытался использовать:
https://github.com/websocket-client/websocket-client
https://github.com/crossbario/autobahn-python
а что нет ...
Этот висит на websockets.connect
import asyncio, websockets, ssl
ssl_context = ssl.SSLContext()
# ssl_context = ssl.SSLContext(protocol=ssl.CERT_NONE)
ssl_context.verify_mode = ssl.CERT_NONE
async def hello():
async with websockets.connect(
'wss://10.20.3.33:11443/ext/remoteinput', ssl=ssl_context) as websocket:
name = b'\x01\xCC\x01'
print("2")
await websocket.send(name)
print(f"> {name}")
greeting = await websocket.recv()
print(f"< {greeting}")
asyncio.get_event_loop().run_until_complete(hello())
То же, что и выше с этим:
import websocket, ssl
ws = websocket.create_connection("wss://10.20.3.33:11443/ext/remoteinput",
sslopt={"cert_reqs": ssl.CERT_NONE})
ws.send(b'\x01\xCC')
ws.close()
import asyncio
from autobahn.asyncio.websocket import WebSocketClientProtocol, \
WebSocketClientFactory
последний тайм-аут, но ожидание дольше ничего не исправляет
разрыв соединения с одноранговым tcp: 10.20.3.33: 11443 с прерыванием = True: тайм-аут открытия рукопожатия WebSocket (узел не завершил открытие рукопожатия вовремя)
class MyClientProtocol(WebSocketClientProtocol):
def onConnect(self, response):
print("Server connected: {0}".format(response.peer))
def onOpen(self):
self.sendMessage(b"\x00\x01\x03\x04", isBinary=True)
if __name__ == '__main__':
factory = WebSocketClientFactory(u"wss://10.20.3.33:11443/ext/remoteinput")
factory.protocol = MyClientProtocol
loop = asyncio.get_event_loop()
coro = loop.create_connection(factory, '10.20.3.33', 11443)
loop.run_until_complete(coro)
loop.run_forever()
loop.close()
Можно ли как-то расширить встроенные сокеты python для использования wss
URL? Или, может быть, есть способ заставить один из приведенных выше примеров работать
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('10.20.3.33', 11443))
msg = s.send(b'\x01\xCC\x01')
s.close()