Help to switch from WebSocket to RawSocket Transport

Hi all,
I am new to crossbar/autobahn framework and to network programming in general, in github project ref:https://github.com/crossbario/crossbar/issues/1660 it was told to me by @oberstet that this is the place I should come to if I have some questions. So recently at work we would like to experiment to move from WebSocket transport to RawSocket Transport with using MessagePackSerializer and do performance comparison. I am requesting to the framework developers to please guide me to convert following config to use raw socket. will using auth settings from ws section should work ?

{
  "version": 2,
  "workers": [
    {
      "type": "router",
      "options": {
        "pythonpath": ["../components"]
      },
      "realms": [
        {
          "name": "realm1",
          "roles": [
            {
              "name": "system",
              "authorizer": "com.XXXX.auth.authorize"
            },
            {
              "name": "user",
              "authorizer": "com.XXXX.auth.authorize"
            },
            {
              "name": "service",
              "authorizer": "com.XXXX.auth.authorize"
            }
          ]
        }
      ],
      "transports": [
        {
          "type": "rawsocket",
          "endpoint": {
            "type": "unix",
            "path": "/tmp/crossbar-socket"
          }
        },
        {
          "type": "web",
          "endpoint": {
            "type": "tcp",
            "port": 8080
          },
          "paths": {
            "status": {
              "type": "resource",
              "classname": "health_web_indicator.run",
              "extra": {
                "DVMT_VERSION": "2.0.1",
                "HEALTHY_INDICATOR": ":) DVMT UP",
                "UNHEALTHY_INDICATOR": ":( DVMT DOWN",
                "MSSQL_DRIVER": "FreeTDS",
                "MSSQL_SERVER": "XXXX.dv.local",
                "MSSQL_PORT": "1515",
                "MSSQL_DATABASE": "XXXX",
                "MSSQL_USER": "XXXX",
                "MSSQL_PASSWORD": "XXXX",
                "SUPERVISOR_PROCESSES": ["surgeon_login", "system_config", "system_monitor", "system_registry", "realm_monitor"],
                "SUPERVISOR_SERVER_SOCKET": "/crossbar/supervisord.sock"
              }
            },
            "ws": {
              "type": "websocket",
              "auth": {
                "anonymous": {
                  "type": "dynamic",
                  "authenticator": "com.intusurg.auth.authenticate"
                },
                "ticket": {
                  "type": "dynamic",
                  "authenticator": "com.intusurg.auth.authenticate"
                }
              },
              "debug": true,
              "options": {
                "auto_ping_interval": 0,
                "auto_ping_timeout": 60000,
                "auto_ping_size": 4,
                "compression": {
                  "deflate": {
                    "request_no_context_takeover": false,
                    "request_max_window_bits": 11,
                    "no_context_takeover": false,
                    "max_window_bits": 11,
                    "memory_level": 4
                  }
                }
              }
            }
          }
        }
      ],
      "components": [
        {
          "id": "auth",
          "type": "class",
          "classname": "auth.AuthComponent",
          "realm": "realm1",
          "role": "trusted",
          "extra": {
            "prefix": "com.intusurg.auth",
            "system_role": "system",
            "anonymous_role": "anonymous",
            "mssql": {
              "driver": "FreeTDS",
              "server": "XXXX.dv.local",
              "port": "1515",
              "database": "XXXX",
              "uid": "XXXX",
              "pwd": "XXXX",
              "autocommit": true
            },
            "heartbeat_rate": 30.0,
            "ldap_api_url": "http://XXXX:80/rssapi/dvmsapi/admin/GetUserLdapGroups/{username}",
            "enforce_cert_match": false,
            "cert_sub_pattern": "[\\s_-]"
          }
        }
      ]
    }
  ]
}

also will it be easy enough for you to please give me an example for using autobahnpython as a client for rawsocket transport. https://crossbar.io/docs/RawSocket-Transport/#example---connecting-transport

Yes, that should work.

Below I have pasted the altered config (untested) that removes the websocket transport and alters your existing rawsocket transport to add authentication.

Note: The current RawSocket implementation does not support auto ping/pong and “compression” is a websocket feature, hence I removed that.

{
  "version": 2,
  "workers": [
    {
      "type": "router",
      "options": {
        "pythonpath": ["../components"]
      },
      "realms": [
        {
          "name": "realm1",
          "roles": [
            {
              "name": "system",
              "authorizer": "com.XXXX.auth.authorize"
            },
            {
              "name": "user",
              "authorizer": "com.XXXX.auth.authorize"
            },
            {
              "name": "service",
              "authorizer": "com.XXXX.auth.authorize"
            }
          ]
        }
      ],
      "transports": [
        {
          "type": "rawsocket",
          "endpoint": {
            "type": "unix",
            "path": "/tmp/crossbar-socket"
          }
        },
        {
          "type": "web",
          "endpoint": {
            "type": "tcp",
            "port": 8080
          },
          "paths": {
            "status": {
              "type": "resource",
              "classname": "health_web_indicator.run",
              "extra": {
                "DVMT_VERSION": "2.0.1",
                "HEALTHY_INDICATOR": ":) DVMT UP",
                "UNHEALTHY_INDICATOR": ":( DVMT DOWN",
                "MSSQL_DRIVER": "FreeTDS",
                "MSSQL_SERVER": "XXXX.dv.local",
                "MSSQL_PORT": "1515",
                "MSSQL_DATABASE": "XXXX",
                "MSSQL_USER": "XXXX",
                "MSSQL_PASSWORD": "XXXX",
                "SUPERVISOR_PROCESSES": ["surgeon_login", "system_config", "system_monitor", "system_registry", "realm_monitor"],
                "SUPERVISOR_SERVER_SOCKET": "/crossbar/supervisord.sock"
              }
            },
            "ws": {
              "type": "websocket",
              "auth": {
                "anonymous": {
                  "type": "dynamic",
                  "authenticator": "com.intusurg.auth.authenticate"
                },
                "ticket": {
                  "type": "dynamic",
                  "authenticator": "com.intusurg.auth.authenticate"
                }
              },
              "debug": true,
              "options": {
                "auto_ping_interval": 0,
                "auto_ping_timeout": 60000,
                "auto_ping_size": 4,
                "compression": {
                  "deflate": {
                    "request_no_context_takeover": false,
                    "request_max_window_bits": 11,
                    "no_context_takeover": false,
                    "max_window_bits": 11,
                    "memory_level": 4
                  }
                }
              }
            }
          }
        }
      ],
      "components": [
        {
          "id": "auth",
          "type": "class",
          "classname": "auth.AuthComponent",
          "realm": "realm1",
          "role": "trusted",
          "extra": {
            "prefix": "com.intusurg.auth",
            "system_role": "system",
            "anonymous_role": "anonymous",
            "mssql": {
              "driver": "FreeTDS",
              "server": "XXXX.dv.local",
              "port": "1515",
              "database": "XXXX",
              "uid": "XXXX",
              "pwd": "XXXX",
              "autocommit": true
            },
            "heartbeat_rate": 30.0,
            "ldap_api_url": "http://XXXX:80/rssapi/dvmsapi/admin/GetUserLdapGroups/{username}",
            "enforce_cert_match": false,
            "cert_sub_pattern": "[\\s_-]"
          }
        }
      ]
    }
  ]
}

Hi,

to use messagepack from a autobahn-python client, using twisted + applicationsession based api of autobahn, see this example:

import os
import six
import argparse

import txaio
txaio.use_twisted()

from autobahn.twisted.wamp import ApplicationSession, ApplicationRunner
from autobahn.wamp.types import SubscribeOptions
from autobahn.wamp.serializer import JsonSerializer, CBORSerializer, MsgPackSerializer


class ClientSession(ApplicationSession):

    async def onJoin(self, details):
        print('session joined', details)


if __name__ == '__main__':

    serializers = [CBORSerializer()]
    # serializers = [MsgPackSerializer()]
    # serializers = [JsonSerializer()]

    parser = argparse.ArgumentParser()

    parser.add_argument('-d',
                        '--debug',
                        action='store_true',
                        help='Enable debug output.')

    parser.add_argument('--url',
                        dest='url',
                        type=six.text_type,
                        default="ws://localhost:8080/ws",
                        help='The router URL (default: "ws://localhost:8080/ws").')

    parser.add_argument('--realm',
                        dest='realm',
                        type=six.text_type,
                        default="realm1",
                        help='The realm to join (default: "realm1").')

    args = parser.parse_args()

    # start logging
    if args.debug:
        txaio.start_logging(level='debug')
    else:
        txaio.start_logging(level='info')

    # any extra info we want to forward to our ClientSession (in self.config.extra)
    extra = {
    }

    # now actually run a WAMP client using our session class ClientSession
    runner = ApplicationRunner(url=args.url, realm=args.realm, extra=extra, serializers=serializers)
    runner.run(ClientSession, auto_reconnect=True)

and the examples here https://github.com/crossbario/crossbar-examples/tree/master/serializers

Hope this helps to get you started! rgd comparing serializer performance, checkout this:

https://crossbario.com/docs/benchmarks/serialization/index.html
https://crossbario.com/docs/crossbarfx/benchmarks.html

Cheers,
/Tobias

Hi @om26er, Thanks for getting back to me.

I have used the raw socket config as you suggested, but I am not able to find a way to test this out using RawSocket, I tried to find some information over the internet, but this section seems to be empty regarding connecting transport, https://crossbar.io/docs/RawSocket-Transport/#example---connecting-transport.

I would really appreciate some help in this regards.

Thanks @oberstet this really helped me to switch from JSON serializer to MsgPackSerializer. we will be performing some tests later today, albiet over websocket. I still have to figure out how to configure RawSocket connecting transport.
I was not able to stop myself from asking the difference between, Payload mode “normal” and Payload mode “transparent” ?

In my continued effort convert to move transport layer from Websocket to using rawsocket, I tried the following

I was able to incorporate runner.py from https://github.com/crossbario/autobahn-python/blob/master/examples/asyncio/wamp/rawsocket/runner.py and put in the autobahn client

…..
from rawsocket.runner import ApplicationRunnerRawSocket
from  autobahn.wamp.serializer import MsgPackSerialize
….
….

    context = ssl.SSLContext()
    context.load_cert_chain(cert)
    serializers = [MsgPackSerializer()]

    # runner = ApplicationRunner( router,
    #                             realm, 
    #                             ssl=context,
    #                             serializers = serializers,
    #                             extra={
    #                                 'systemName':system_name,
    #                                 'router':router,
    #                                 #'num_streams':num_streams,
    #                                 'file_count':file_count,
    #                                 'log':log,
    #                                 'streams':get_stream_flags()
    #                             })

    runner = ApplicationRunnerRawSocket( 
                            "tcp://dev4-dv.davinci-onsite.com:8888",
                            realm,
                            serializer = serializers,
                            )
   runner.run(create_session)
….

Here is the config.json at crossbar router

....
      "transports": [
        {
          "type": "rawsocket",
           "endpoint": {
                "type": "tcp",
                "port": 8888
                },
        "auth": {
            "anonymous": {
              "type": "dynamic",
              "authenticator": "com.intusurg.auth.authenticate"
            },
            "ticket": {
              "type": "dynamic",
              "authenticator": "com.intusurg.auth.authenticate"
            }
          },
          "debug": true
        },
....

Then I tried to run autobahn client which fails as follows,

DEBUG:file_uploader.spEm_PreFile:Logger Started in Debug mode
DEBUG:asyncio:Get address info dev4-dv.davinci-onsite.com:8888, type=<SocketKind.SOCK_STREAM: 1>
DEBUG:asyncio:Getting address info dev4-dv.davinci-onsite.com:8888, type=<SocketKind.SOCK_STREAM: 1> took 25.954 ms: [(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('100.74.40.13', 8888))]
DEBUG:asyncio:poll took 20.546 ms: 1 events
DEBUG:asyncio:connect <socket.socket fd=11, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('0.0.0.0', 0)> to ('100.74.40.13', 8888)
DEBUG:asyncio:poll took 13.790 ms: 1 events
Traceback (most recent call last):
  File "runner.py", line 4, in <module>
    client.main()
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/venv/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/venv/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/venv/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/venv/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/file_uploader/client.py", line 38, in main
    run_fileUp(**kwargs)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/file_uploader/spEm_PreFile.py", line 537, in run
    runner.run(create_session)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/rawsocket/runner.py", line 97, in run
    (_transport, protocol) = loop.run_until_complete(coro)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 473, in run_until_complete
    return future.result()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/coroutines.py", line 129, in throw
    return self.gen.throw(type, value, traceback)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 783, in create_connection
    raise exceptions[0]
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 770, in create_connection
    yield from self.sock_connect(sock, address)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/coroutines.py", line 129, in throw
    return self.gen.throw(type, value, traceback)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/selector_events.py", line 450, in sock_connect
    return (yield from fut)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/selector_events.py", line 480, in _sock_connect_cb
    raise OSError(err, 'Connect call failed %s' % (address,))
ConnectionRefusedError: [Errno 61] Connect call failed (###.###.###.###’, 8888)

Please let me know @oberstet, @oberstet if I am doing the right thing.

pls have a look here:

hope this helps … lemme know

Hi @oberstet,
thanks for the reply I tried to do the suggestion,

using

runner = ApplicationRunner( 
                            u'rss://dev4-YY.XXXXX-onsite.com:8188',
                            realm,
                            ssl=context,
                            serializers = serializers,
                            )

configured Transport as suggested

      "transports": [
        {
          "type": "rawsocket",
           "endpoint": {
                "type": "tcp",
                "port": 8188
                },
        "auth": {
            "anonymous": {
              "type": "dynamic",
              "authenticator": "com.intusurg.auth.authenticate"
            },
            "ticket": {
              "type": "dynamic",
              "authenticator": "com.intusurg.auth.authenticate"
            }
          },
          "debug": true
        },
....

however I am getting this error

(venv) ➜  DVMTFileUploadEmulator-asyncFileRead python3 runner.py -s UATVAIBHAV -r dev -f 12 -P o2
DEBUG:file_uploader.spEm_PreFile:Logger Started in Debug mode
DEBUG:asyncio:Get address info dev4-dv.davinci-onsite.com:8188, type=<SocketKind.SOCK_STREAM: 1>
DEBUG:asyncio:Getting address info dev4-dv.davinci-onsite.com:8188, type=<SocketKind.SOCK_STREAM: 1> took 4.413 ms: [(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('###.###.###.###', 8188))]
DEBUG:asyncio:poll took 1.572 ms: 1 events
DEBUG:asyncio:connect <socket.socket fd=11, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('0.0.0.0', 0)> to ('100.74.40.13', 8188)
DEBUG:asyncio:poll took 19.414 ms: 1 events
Traceback (most recent call last):
  File "runner.py", line 4, in <module>
    client.main()
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/venv/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/venv/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/venv/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/venv/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/file_uploader/client.py", line 38, in main
    run_fileUp(**kwargs)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/file_uploader/spEm_PreFile.py", line 538, in run
    runner.run(create_session)
  File "/Users/vchauhan/DEV/DVMTFileUploadEmulator-asyncFileRead/venv/lib/python3.6/site-packages/autobahn/asyncio/wamp.py", line 261, in run
    (transport, protocol) = loop.run_until_complete(coro)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 473, in run_until_complete
    return future.result()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/coroutines.py", line 129, in throw
    return self.gen.throw(type, value, traceback)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 783, in create_connection
    raise exceptions[0]
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 770, in create_connection
    yield from self.sock_connect(sock, address)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/coroutines.py", line 129, in throw
    return self.gen.throw(type, value, traceback)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/selector_events.py", line 450, in sock_connect
    return (yield from fut)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/selector_events.py", line 480, in _sock_connect_cb
    raise OSError(err, 'Connect call failed %s' % (address,))
ConnectionRefusedError: [Errno 61] Connect call failed ('###.###.###.###', 8188)

with netstat command I am seeing that corresponding port is open

root@sl2xbar03:/crossbar/.crossbar$ netstat -tulpn | grep LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      113844/crossbar-wor
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      35950/python
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8673/sshd
tcp        0      0 0.0.0.0:8089            0.0.0.0:*               LISTEN      9023/splunkd
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      113834/nginx: maste
tcp        0      0 0.0.0.0:8188            0.0.0.0:*               LISTEN      113844/crossbar-wor
tcp6       0      0 :::22                   :::*                    LISTEN      8673/sshd
tcp6       0      0 :::5666                 :::*                    LISTEN      8682/xinetd

I really appreciate all the help I am getting at this forums.

@oberstet

so the reason I had trouble with ports was because we have a crossbar router sitting behind a load balancer. load balancer is talking to crossbar router on port 443, on crossbar server we also have nginx installed which is acting as reverse proxy. I have autobahn clients talking to loadbalancer at port 443, where authentication is managed by certificates.

I am trying to use Rawsocket as a transport layer between autobahn client and crossbar router (we already have websocket transport ) but we are trying to use Rawsocket for a Proof of Concept that we can use Rawsocket in place of websocket with minimum changes.

I am sharing following that someone who maybe able to help out,

user              nginx  nginx;

worker_processes  4;

pid        /var/run/nginx.pid;

worker_rlimit_nofile 64000;

include /etc/nginx/modules-enabled/*.conf;


events {
        worker_connections 20000;
}


http {

        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        server_tokens off;
        access_log "/var/log/nginx/access.log";
        error_log "/var/log/nginx/error.log" error;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}


$ cat /etc/nginx/tcpconf.d/*
stream {
    upstream web_server {
        server localhost:443;
    }

    server {
        listen 443;
        proxy_pass web_server;
    }
}




$ cat /etc/nginx/conf.d/*.conf

upstream backends {
    server localhost:8080;


This is where traffic is terminated currently and upgrade to websocket happens(I think)

$ cat /etc/nginx/sites-enabled/default.conf

server {
   listen 443 ssl;
   server_name _;
   ssl_certificate_key /etc/nginx/ssl/XXXX.key;
   ssl_certificate     /etc/nginx/ssl/XXXXXX.pem;
   ssl_protocols TLSv1.2;
   ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
   ssl_prefer_server_ciphers on;
   location / {
       proxy_pass http://backends;
       proxy_read_timeout 36000s;
       proxy_set_header X-Forwarded-Ssl on;
       proxy_set_header X-Forwarded-Proto https;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Host <DOMAIN_HERE>;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";

   }
}



$ cat /crossbar/.crossbar/config.json
{
  "version": 2,
  "workers": [
    {
      "type": "router",
      "options": {
        "pythonpath": [
          "../components"
        ]
      },
      "realms": [
        {
          "name": "realm1",
          "roles": [
            {
              "name": "system",
              "authorizer": "com.XXXX.auth.authorize"
            },
            {
              "name": "user",
              "authorizer": "com.XXXX.auth.authorize"
            },
            {
              "name": "service",
              "authorizer": "com.intusurg.auth.authorize"
            }
          ]
        }
      ],
      "transports": [
        {
          "type": "rawsocket",
          "endpoint": {
            "type": "tcp",
            "port": 8188
          },
          "auth": {
            "anonymous": {
              "type": "dynamic",
              "authenticator": "com.XXXXX.auth.authenticate"
            },
            "ticket": {
              "type": "dynamic",
              "authenticator": "com.XXXXX.auth.authenticate"
            }
          },
          "debug": true
        },
        {
          "type": "web",
          "endpoint": {
            "type": "tcp",
            "port": 8080
          }
        }
      ]
    }
  ]
}

log message for running autobahn client

DEBUG:file_uploader.spEm_PreFile:Logger Started in Debug mode
DEBUG:asyncio:Get address info dev4-dv.davinci-onsite.com:443, type=<SocketKind.SOCK_STREAM: 1>
DEBUG:asyncio:Getting address info dev4-dv.davinci-onsite.com:443, type=<SocketKind.SOCK_STREAM: 1> took 13.805 ms: [(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('100.74.40.13', 443))]
DEBUG:asyncio:poll took 6.943 ms: 1 events
DEBUG:asyncio:connect <socket.socket fd=11, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('0.0.0.0', 0)> to ('100.74.40.13', 443)
DEBUG:asyncio:poll took 3.074 ms: 1 events
DEBUG:asyncio:<asyncio.sslproto.SSLProtocol object at 0x10a4cce80> starts SSL handshake
DEBUG:asyncio:poll took 7.208 ms: 1 events
DEBUG:asyncio:poll took 1.593 ms: 1 events
DEBUG:asyncio:poll took 4.523 ms: 1 events
DEBUG:asyncio:poll took 1.868 ms: 1 events
DEBUG:asyncio:<asyncio.sslproto.SSLProtocol object at 0x10a4cce80>: SSL handshake took 19.0 ms
DEBUG:asyncio:<socket.socket fd=11, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('172.21.53.183', 58925), raddr=('100.74.40.13', 443)> connected to dev4-dv.davinci-onsite.com:443: (<asyncio.sslproto._SSLProtocolTransport object at 0x10a4ccba8>, <autobahn.asyncio.rawsocket.WampRawSocketClientProtocol object at 0x107f76e80>)
INFO:asyncio:poll took 304575.622 ms: 1 events
2019-11-20T16:14:31 poll took 304575.622 ms: 1 events
WARNING:autobahn.asyncio.rawsocket.PrefixProtocol:WampRawSocketProtocol: ApplicationSession.onClose raised ('WampRawSocketClientProtocol' object has no attribute '_session')
2019-11-20T16:14:31 WampRawSocketProtocol: ApplicationSession.onClose raised ('WampRawSocketClientProtocol' object has no attribute '_session')

@om26er I have posted some information about the infra, is it possible for you to redact that? you can try to contact me on Vaibhav.rbs@gmail.com, where I would like to discuss that. I want this post to remain so that someone can benefit from it, sans info about my infra…

I think you can do that yourself, you just have to edit your comments to do that.

I already did that however by the time I did that and you commented 25 Days ago as a part of the reply we have some infra specific information and I cannot edit your comment or maybe I am not aware if I can do that.

I have updated my initial comment by copying your now redacted comment. Hope that helps.