При попытке подключиться к Emotiv Cortex Service, вызвав Python 3.7. из Matlab 2018a через websocket-клиент для Python
py.importlib.import_module('websocket')
py.importlib.import_module('ssl')
ws = py.websocket.WebSocket()
ws.connect("wss://emotivcortex.com:54321", pyargs('sslopt','{"cert_reqs": ssl.CERT_NONE}'))
эта ошибка возникает:
Error using _http>_ssl_socket (line 245)
Python Error: ValueError: dictionary update sequence element #0 has length 1; 2 is required
Error in _http>connect (line 126)
sock = _ssl_socket(sock, options.sslopt, hostname)
Error in _core>connect (line 223)
options.pop('socket', None))
Следующие эквивалентные строки хорошо работают в Python 3.7. (PyCharm)
import websocket
import ssl
ws = websocket.create_connection("wss://echo.websocket.org", sslopt={"cert_reqs": ssl.CERT_NONE})
ws.send("{ "jsonrpc": "2.0", "method": "queryHeadsets", "params": {}, "id": 1 }")
и т. Д., Начиная соединение с Cortex Service
Строка, вызывающая ошибку:
ws.connect("wss://emotivcortex.com:54321", pyargs('sslopt','{"cert_reqs": ssl.CERT_NONE}')
Некоторые ограничения:
Кажется, Matlab не позволяет напрямую пропускать проверку сертификата при безопасном соединении через веб-сокет, поэтому цикл через Python
Интересно, что тот же синтаксис работает с этой командой в Matlab:
ws = py.websocket.WebSocket ("wss: //emotivcortex.com: 54321", pyargs ('sslopt', '{"cert_reqs": ssl.CERT_NONE}'))
Однако после выполнения последнего ws.send ("userRequest ...") вызывает эту ошибку:
Ошибка при использовании формата _abnf> (строка 241)
Ошибка Python: TypeError: объект 'str' не вызывается
Ошибка в _core> send_frame (строка 272)
data = frame.format ()
Ошибка в _core> send (строка 253)
вернуть self.send_frame (frame)