Содержание
- How to reconnect after: ConnectionClosed: code 1006 ? #367
- Comments
- Footer
- получить причину, почему веб-сокеты закрыты с кодом закрытия 1006
- 1 ответ
How to reconnect after: ConnectionClosed: code 1006 ? #367
Hi, I’m still new to python and websockets and can’t figure this out.
I am connected to two websockets. After a while, one of the websockets disconnects and gives ConnectionClosed: Websockets connection is closed: code = 1006 , no reason
I don’t know how to fix this other than to detect it with «if not ws.open:» and then reconnect. But I can’t seem to get it to reconnect to the websocket.
Here is the websockets code I’m using, and below this is how I tried to get it to reconnect but failed:
Now trying to get it to detect websocket closed (after error 1006) and reconnect, but this doesn’t work.
The text was updated successfully, but these errors were encountered:
Now trying to get it to detect websocket closed (after error 1006) and reconnect, but this doesn’t work.
Could you clarify how it fails?
One possible issue:
will close the connection as soon as you exit the async with block, which I suspect isn’t what you intend.
I made a mistake. After the ConnectionClosed error code 1006, it detects the websocket is closed via the if not ws.open: statement, and the websocket reconnects. However, it does not return to the original while loop and print(json.loads(json.loads(packet)[‘data’])[‘bids’][0]) , which means the websocket exits after leaving the async with block, as you said.
You are correct about wanting the connection to stay open at all times. How do I get the websocket to stay open after it detects a disconnect?
Looks like I got it to work by removing the async with as you suggested:
The websocket still disconnects every 7-8 mins, but this workaround is good enough.
Thank you @aaugustin for your help on this!
Good to hear your issue is resolved.
You could also start an asyncio task that calls ws.ping() regularly. That may help keeping the connection open.
Hi I have the same exact issue but your solution doesn’t seem to be working.
The way I’ve been testing it is by closing my internet connection, but after a ten second delay it still returns the 1006 error.
I’m running Python 3.7 and Websockets 7.0.
Let me know what your thoughts are, thanks!
@aaugustin Proof of stake is coming, soon proof of work (which consumes the energy you’re worried about) will be obsolete. Regardless, having a free financial system with no quantitative easing is much more important than consuming a little electricity. Furthermore, it’s been shown that gold mining still uses much more electricity than Bitcoin, would you also boycott any question related to that or any other industry that consumes vast amounts of energy?
Yes, I’m aware of all this, and no, I’m not getting into this discussion — I hope you understand 😉
Hi @aaugustin, im doing a Kaggle project with geological data and ran into the same problem as @mgavaudan (the one cited above). Are you aware of any solutions to it?
Could you file a new issue with an explanation of your problem and, ideally, an example that allows reproducing it?
Make ping_interval=None in ws connection so connect like websockets.connect(config.WS_BTCTURK_URL, ssl=True, ping_interval=None)
A potential solution for this is removing await asyncio.sleep(1) entirely, or reducing the sleep time to something small like await asyncio.sleep(0.00001) . My hypothesis is high sleep times result in a large build-up of messages, which causes the 1006 error.
I’ve also noticed I get 1006 errors if I run the code on a slow hard drive, and no errors if I run on a SSD hard drive. I’m beginning to think if other parts of the code is too slow (e.g. writing to a database), then the websocket 1006 error is raised before the real error is raised?
Please let me know if this solves the issue for anyone.
That is most certainly not the cause. TCP flow control would kick in in such a case. If you want to investigate what’s happening, I suggest opening Wireshark, tracing packets and enabling debugging flags for asyncio.
Hello, i am getting an issue with this code.
Currently im constantly seeing this message:
INFO:root:exception occured at ftx-blotter
INFO:root:Socket Closed: at 2022-03-10 18:07:44.202593;
close reason: ,
close code: 1006
It seems im getting disconnected after couple hours when i step away from my computer.
© 2023 GitHub, Inc.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Источник
получить причину, почему веб-сокеты закрыты с кодом закрытия 1006
Я хотел бы получить причины, по которым закрыты websockets, поэтому я могу показать правильное сообщение пользователю.
Код всегда 1006, и причина всегда «». Но я хочу разделить разные причины закрытия.
Например, строка comand дает ошибку: «вы не можете удалить это, потому что база данных не позволит вам». Но на консоли Chrome причина по-прежнему «».
Любой другой способ разделить разные причины закрытия?
1 ответ
Закрыть код 1006 — это специальный код, который означает, что соединение было анонимно (локально) закрыто реализацией браузера.
Если ваш клиент-клиент браузера закрывает код 1006 , вам следует посмотреть событие websocket.onerror(evt) для получения более подробной информации.
Тем не менее, Chrome редко сообщают обо всех закрытых кодах 1006 аргументов стороне javascript. Вероятно, это связано с правилами безопасности клиента в спецификации WebSocket, чтобы предотвратить злоупотребление websocket. (например, использовать его для сканирования открытых портов на целевом сервере или для создания множества подключений для атаки «отказ в обслуживании» ).
Обратите внимание, что Chrome будет часто сообщать о закрытом коде 1006 , если во время HTTP-обновления до Websocket есть ошибка (это шаг до того, как веб-сайт технически «подключен» ). По причинам, таким как плохая аутентификация или авторизация или использование плохого протокола (например, запрос подпротокола, но сам сервер не поддерживает этот же подпротокол) или даже попытка поговорить с местоположением сервера, которое не является веб-узлом (например, например, попытка подключения к ws://images.google.com/ )
В принципе, если вы видите закрытый код 1006 , у вас очень низкая ошибка уровня с самим websocket (аналогично «Unable to Open File» или «Socket Error» ), не предназначенная для пользователя, так как это указывает на проблему низкого уровня с вашим кодом и реализацией. Исправьте проблемы с низким уровнем, а затем, когда вы подключены, вы можете включить более разумные коды ошибок. Вы можете выполнить это с точки зрения объема или серьезности вашего проекта. Пример: информация и уровень предупреждения являются составной частью вашего конкретного проекта и не приводят к завершению соединения. С серьезными или фатальными сообщениями, сообщающими также с использованием вашего протокола проекта, чтобы передать как можно больше деталей, а затем закрыть соединение, используя ограниченные возможности тесного потока websocket.
Помните, что коды закрытия WebSocket очень строго определены, а фраза/сообщение с закрытой причиной не может превышать 123 символа (это преднамеренное ограничение на веб-расписание).
Но не все потеряно, если вы просто хотите эту информацию для отладки, подробно о закрытии и о своей основной причине часто сообщается с большим количеством подробностей в консоли javascript Chrome.
Источник
Summary
- TL;DR
- What is the websocket 1006 error?
- Why do I see this error?
- How to fix it?
- Use the –link parameter to get a temporary https
- Option 1 : get the link locally
- Option 2 : Use ngrok
- Use the –link parameter to get a temporary https
At the end of the installation of the code server, you are ready to enjoy your new development workflow, and then, you see this message “WebSocket close with status code 1006”. How to solve it? Check out these answers
Note: If you are confused about what code server is, check this post which explains it.
TL;DR
Check your https
connection. Your browser cannot reach your code server instance.
What is the websocket 1006 error?
The websocket 1006 error means that the connection has been closed, locally, by your browser.
If you see a close code 1006, you have a very low level error with WebSocket itself as this error is not really meant for the user. The websocket 1006 error points to a low level issue with your code and implementation.
Why do I see this error?
The main reason is that the connection was closed abnormally (locally) by the browser implementation.
It means that your browser cannot reach your remote code server.
The main issue is about your https
connection to the server.
How to fix it?
You might not be sure about the process to follow in order to setup code server. I did a tutorial on how to setup code server cloud IDE platform on digitalocean using kubernetes.
If you speak french, the french version is here.
The good news is that, there are two possible solutions :
Use the –link parameter to get a temporary https
Option 1 : get the link locally
code-server --host 127.0.0.1 --bind-addr 0.0.0.0:9000 --auth password --link
Option 2 : Use ngrok
ngrok will tunnel and create an https connection to your server.
code-server --host 127.0.0.1 --bind-addr 0.0.0.0:9000 --auth password ngrok http 9000
Use wss to forward
Here is the code to perform the forwarding and solve the issue
// forward websocket (wss -> ws)
httpsServer.on('upgrade', function (req, socket, head) {
proxy.ws(req, socket, head, {
target: 'ws://...',
ws: true
})
})
I am new to kite. I have been trying the github example of websocket usage in python since past 3 days. I have been setting the access token properly after generating every day. Subscribed to only one instrument in LTP mode. But every day after 3 hrs or so the connection gets aborted and ticks stop working.
The logging is in debug mode. But this is the only error I get.
DEBUG:root:Ticks: [{‘tradable’: True, ‘mode’: ‘ltp’, ‘instrument_token’: 408065, ‘last_price’: 1172.5}]
DEBUG:root:Ticks: [{‘tradable’: True, ‘mode’: ‘ltp’, ‘instrument_token’: 408065, ‘last_price’: 1172.7}]
ERROR:kiteconnect.ticker:Connection error: 1006 — connection was closed uncleanly (None)
ERROR:kiteconnect.ticker:Connection closed: 1006 — connection was closed uncleanly (None)
My internet connectivity is not an issue as I have been using internet all the while.
Could someone please help resolve the issue.
Закрыть код 1006
— это специальный код, который означает, что соединение было анонимно (локально) закрыто реализацией браузера.
Если ваш клиент-клиент браузера закрывает код 1006
, вам следует посмотреть событие websocket.onerror(evt)
для получения более подробной информации.
Тем не менее, Chrome редко сообщают обо всех закрытых кодах 1006 аргументов стороне javascript. Вероятно, это связано с правилами безопасности клиента в спецификации WebSocket, чтобы предотвратить злоупотребление websocket. (например, использовать его для сканирования открытых портов на целевом сервере или для создания множества подключений для атаки «отказ в обслуживании» ).
Обратите внимание, что Chrome будет часто сообщать о закрытом коде 1006
, если во время HTTP-обновления до Websocket есть ошибка (это шаг до того, как веб-сайт технически «подключен» ). По причинам, таким как плохая аутентификация или авторизация или использование плохого протокола (например, запрос подпротокола, но сам сервер не поддерживает этот же подпротокол) или даже попытка поговорить с местоположением сервера, которое не является веб-узлом (например, например, попытка подключения к ws://images.google.com/
)
В принципе, если вы видите закрытый код 1006
, у вас очень низкая ошибка уровня с самим websocket (аналогично «Unable to Open File» или «Socket Error» ), не предназначенная для пользователя, так как это указывает на проблему низкого уровня с вашим кодом и реализацией. Исправьте проблемы с низким уровнем, а затем, когда вы подключены, вы можете включить более разумные коды ошибок. Вы можете выполнить это с точки зрения объема или серьезности вашего проекта. Пример: информация и уровень предупреждения являются составной частью вашего конкретного проекта и не приводят к завершению соединения. С серьезными или фатальными сообщениями, сообщающими также с использованием вашего протокола проекта, чтобы передать как можно больше деталей, а затем закрыть соединение, используя ограниченные возможности тесного потока websocket.
Помните, что коды закрытия WebSocket очень строго определены, а фраза/сообщение с закрытой причиной не может превышать 123 символа (это преднамеренное ограничение на веб-расписание).
Но не все потеряно, если вы просто хотите эту информацию для отладки, подробно о закрытии и о своей основной причине часто сообщается с большим количеством подробностей в консоли javascript Chrome.