Краткое
Я пытаюсь соединить Node.js [клиент] и Python [сервер].Сервер Python поддерживает только WebSocket, где Node.js socket.io пытается с длинным опросом установки транспорта: [websocket]. После всех настроек я не получаю данных, а node.js socket.io пытается повторно подключиться к серверу все время.
Требование
Python и Node.js связаны друг с другом через websocket.where Node.js - это клиент, а Python - на стороне сервера.
Код
Python
# IMPORT'S
import asyncio # core: python async-await library.
import string # core: python string manipulatation library.
import json # core: json library.
import pydash # pip: utility module.
from starlette.applications import Starlette # pip: http framework.
from starlette.responses import JSONResponse # pip: http response handler.
from starlette.websockets import WebSocket # pip: websocket library.
import uvicorn # pip: server runner.
# SYSTEM IMPORT'S
from system import Connect # system: load engine connection.
from www.template import Template # system: route template loader
# ENGINE: STARLETTE
App = Starlette()
App.debug = True
# GLOBAL'S
_port = 8000
_host = '0.0.0.0'
# HANDLER: APP
"""
Details: Allow's external connection to interact
with system core.rightnow socket connection can
be made.
"""
class App:
def __init__(self, scope):
assert scope['type'] == 'websocket'
self.scope = scope
async def __call__(self, receive, send):
# load and accept socket.io connection.
_WebSocket = WebSocket(self.scope, receive=receive, send=send)
await _WebSocket.accept()
# local variable's.
_templateName = _WebSocket.query_params['name']
# only proceed if templateName is defined.
if _templateName:
# send json response to client.
await _WebSocket.send_json({ 'templateReply': 'RecivedData' }, mode= 'binary')
# close socket connection.
await _WebSocket.close()
# return none. as application is
# run on socket.
return None
# SERVER RUN
if __name__ == '__main__':
# run server.
uvicorn.run(App, host= _host, port = _port)
Node.js
// if _user information found than do login verification. else do
// refresh @Cr for user information.
// if _BroadCast contains data set.
let _io = IO.connect('http://localhost:8000', {
'path': '/chat',
'transports': ['websocket'],
'query': {
'name': 'monk',
'POST': 'dotsinspace@gmail.com'
}
})
_io.on('connection', async () => {
console.log('connected to user....') // log: nothing
})
_io.on('reconnecting', (__connection) => {
console.log(__connection) // log: 2, 3 etc....
})
Результат Ответ сокета