Brief
I am trying to connect Node.js[client] and Python [server]. Python server only supports WebSocket where Node.js socket.io is trying with long polling setting transport: [websocket].after all setup I am getting no data and node.js socket.io is trying to re-connect to server all the time.
Requirement
Python and Node.js connected with each other by websocket.where Node.js is a client and Python is server side.
Code
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.... })
Result Socket Response