Интересная часть websockets отправляет по существу незатребованный контент с сервера на браузер?
Хорошо, я использую django-websocket от Gregor Müllegger. Это действительно замечательная ранняя трещина при создании веб-сайтов в Django.
Я совершил "привет мир". Как это работает: когда запрос представляет собой websocket, объект объекта websocket добавляется к объекту запроса. Таким образом, я могу, с точки зрения интерпретации websocket, сделать что-то вроде:
request.websocket.send('We are the knights who say ni!')
Это прекрасно работает. Я получаю сообщение в браузере как прелесть.
Но что, если я хочу сделать это, не вызывая запрос из браузера?
ОК, поэтому сначала я сохраняю websocket в словаре сеанса:
request.session['websocket'] = request.websocket
Затем в оболочке я иду и захватываю сессию с помощью сеансового ключа. Разумеется, в словаре сеансов есть объект websocket. Happy!
Однако, когда я пытаюсь сделать:
>>> session.get_decoded()['websocket'].send('With a herring!')
Я получаю:
Traceback (most recent call last):
File "<console>", line 1, in <module>
error: [Errno 9] Bad file descriptor
Сад.: - (
ОК, поэтому я почти ничего не знаю о сокетах, но я знаю достаточно, чтобы обнюхать в отладчике, и вот, я вижу, что сокет в моем отладчике (который привязан к подлинному веб-сайту из запрос) имеет fd = 6, а тот, который я захватил из сохраненного сеансом websocket, имеет fd = -1.
Может ли сокет-ориентированный человек помочь мне сортировать этот материал?