1
0
mirror of https://github.com/Eugeny/tabby-web.git synced 2025-07-28 21:24:39 +00:00
Files
build
src
terminus
app
migrations
__init__.py
admin.py
api.py
apps.py
consumers.py
models.py
tests.py
urls.py
views.py
__init__.py
asgi.py
settings.py
urls.py
wsgi.py
.flake8
.gitignore
.pug-lintrc.js
manage.py
package.json
poetry.lock
pyproject.toml
tsconfig.container.json
tsconfig.main.json
webpack.config.js
webpack.main.config.js
webpack.terminal.config.js
yarn.lock
tabby-web/terminus/app/consumers.py
Eugene Pankov dc69574c07 wip
2021-06-12 13:05:35 +02:00

32 lines
1019 B
Python

import asyncio
from channels.generic.websocket import AsyncWebsocketConsumer
class TCPConsumer(AsyncWebsocketConsumer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.loop = asyncio.get_event_loop()
async def connect(self):
self.reader, self.writer = await asyncio.open_connection('192.168.78.233', 22)
self._socket_reader = self.loop.create_task(self.socket_reader())
await self.accept()
async def disconnect(self, close_code):
await self.writer.drain()
self.writer.close()
await self._socket_reader
async def receive(self, bytes_data):
self.writer.write(bytes_data)
async def socket_reader(self):
while True:
await self.reader._wait_for_data('read')
data = bytes(self.reader._buffer.copy())
if not data:
await self.close()
return
del self.reader._buffer[:]
await self.send(bytes_data=data)