Интересно, есть ли способ установить заголовок авторизации при создании соединения сокета на стороне клиента с модулем сокета 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
принимает только строку, а не объект, поэтому я не знаю, как отправить объект для подписки.