मेरे पास निम्न जेएस कोड है जो सॉकेटियो क्लाइंट लाइब्रेरी के माध्यम से सॉकेट से कनेक्ट करने के लिए बहुत अच्छा काम करता है:

userApi = 'userapiaccesfskdglk';
userAccess = 'useaccesfjkasdfdlkf2';

var axios = require('axios');
var socket = require('socket.io-client')('wss://test-meownow12345.com:4566');

socket.emit('Authenticate', {api: userApi, access: userAccess});

socket.on('Party', function(party) {
    console.log('party', party)

})

ये वास्तविक userApi, userAccess, या url का उपयोग नहीं करते हैं, लेकिन इनका उपयोग करने से अभी भी एक ही बिंदु प्राप्त होता है।

मेरे पास पाइथन में यही है, जो मेरे लिए एक सटीक बंदरगाह जैसा दिखता है लेकिन काम नहीं कर रहा है:

from socketIO_client import SocketIO, LoggingNamespace
import logging
logging.basicConfig(level=logging.DEBUG)


def on_party():
    print('connect')

userApi = 'userapiaccesfskdglk'
userAccess = 'useaccesfjkasdfdlkf2'

with SocketIO('wss://test-meownow12345.com', 4566, LoggingNamespace) as socketIO:
    socketIO.emit('Authenticate', {'api': userApi, 'access': userAccess})
    socketIO.on('Party', on_party)

ऐसा लगता है कि यह समकक्ष है लेकिन यह स्पष्ट रूप से नहीं है क्योंकि कोड निम्न पंक्ति से आगे नहीं बढ़ सकता है जो सॉकेट.आईओ कनेक्शन खोलता है:

with SocketIO('wss://test-meownow12345.com', 4566, LoggingNamespace) as socketIO:

मेरे कंसोल में यह निम्नलिखित लॉग त्रुटियों को प्रिंट करता है जो बस दोहराते हैं:

DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): wss
WARNING:socketIO-client:wss:4566//test-meownow12345.com/socket.io [engine.io waiting for connection] HTTPConnectionPool(host='wss', port=4566): Max retries exceeded with url: //test-meownow12345.com/socket.io/?EIO=3&transport=polling&t=1523668232386-0 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x105000278>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))

मुझे सच में यकीन नहीं है कि इसका क्या मतलब है।

मैंने इस संदेश को देने वाली रेखा को बदलने की कोशिश की है और इसे बनाने के लिए 'wss: //' भाग को छोड़ दिया है:

with SocketIO('test-meownow12345.com', 4566, LoggingNamespace) as socketIO:

लेकिन यह अभी भी विफल रहता है, यद्यपि लॉग में एक नया संदेश दोहराता है:

DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): test-meownow12345.com
WARNING:socketIO-client:test-meownow12345.com:4566/socket.io [engine.io waiting for connection] ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
DEBUG:urllib3.connectionpool:Starting new HTTP connection (2): test-meownow12345.com
DEBUG:urllib3.connectionpool:Starting new HTTP connection (3): test-meownow12345.com

किसी भी मदद की वास्तव में सराहना की जाती है, यह काफी निराशाजनक समस्या है।

1
Mark Keane 14 अप्रैल 2018, 04:16

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप SocketIO वर्ग को देखें

class SocketIO(EngineIO):

यह EngineIO से विरासत में मिला है जिसमें __init__ है

class EngineIO(LoggingMixin):

    def __init__(
            self, host, port=None, Namespace=EngineIONamespace,
            wait_for_connection=True, transports=TRANSPORTS,
            resource='engine.io', hurry_interval_in_seconds=1, **kw):
        self._is_secure, self._url = parse_host(host, port, resource)
        self._wait_for_connection = wait_for_connection

और parse_host की परिभाषा है

def parse_host(host, port, resource):
    if not host.startswith('http'):
        host = 'http://' + host
    url_pack = parse_url(host)
    is_secure = url_pack.scheme == 'https'
    port = port or url_pack.port or (443 if is_secure else 80)
    url = '%s:%s%s/%s' % (url_pack.hostname, port, url_pack.path, resource)
    return is_secure, url

यह इंगित करता है कि उपयोग नीचे जैसा होना चाहिए

with SocketIO('https://test-meownow12345.com', 4566, LoggingNamespace) as socketIO:
    socketIO.emit('Authenticate', {'api': userApi, 'access': userAccess})
    socketIO.on('Party', on_party)
1
Tarun Lalwani 29 मई 2018, 15:13