Python 2.7 сокет установить заголовок аутентификации - PullRequest
0 голосов
/ 14 декабря 2018

Интересно, есть ли способ установить заголовок авторизации при создании соединения сокета на стороне клиента с модулем сокета pythons.

Я рассмотрел это: Python запрашивает библиотеку, как передать заголовок авторизации содин токен

И не уверен, что это то, что мне нужно сделать.

Я пытаюсь установить соединение с веб-сокетом от сторонней службы, и их документы предоставляют пример с JS, но библиотека сокетов python, которую я использую, немного отличается. Zendesk Stream API

Как указывают документы, после установления соединения заголовок авторизации должен быть установлен с помощью маркера OAuth.

var WebSocket = require('ws');

var ws_client = new WebSocket(
  'wss://rtm.zopim.com/stream', {
    headers: {
      'Authorization': 'Bearer ' + {OAuth2 access token}
    }
  }
);

Как я могуустановите заголовок Authorization с библиотекой сокетов Python.

Что у меня есть:

import socket 



class SockHandler():
    def __init__(self):
        #create a new socket
        try: 
            self._s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
            print "Socket successfully created"
        except socket.error as err: 
            print "socket creation failed with error %s" %(err)

    def connect(self):
        #connect to a remote socket address
        HOST = self._s.gethostbyname("wss://rtm.zopim.com/stream")
        self._s.connect((HOST, 443))

    def sendMsg(self):
        self._s.send("agents_online")

    def receiveData(self):
        data = self._s.recv(1024)
        print("Data received: %s", data)

После self._s.connect((HOST, 443)) Как мне установить заголовок Authorization с моим OAuth-токеном?

РЕДАКТИРОВАТЬ: Мне также нужно "подписаться" на событие в соответствии с документами Zendesk, которые я предоставил выше.

В примере JS они отправляют объект для подписки насокет, такой как

{
  topic: "agents.{metric_key}",
  action: "subscribe"
}

Я не уверен, как я могу сделать это с сокетом Python.socket.send принимает только строку, а не объект, поэтому я не знаю, как отправить объект для подписки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...