用python打开带网址的套接字

时间:2017-08-25 22:22:15

标签: python python-2.7 sockets

下面我将代码附加到使用api的示例中。 如何将此代码从js转换为python?

const socketToken = '';

  //Connect to socket
  const data= io(`https://sockets.data.com?token=${socketToken}`);


  data.on('event', (eventData) => {
    if (!eventData.for && eventData.type === '') {     
      console.log(eventData.message);
    }
    if (eventData.for === 'test') {
      switch(eventData.type) {
        case '1':          
          console.log(eventData.message);
          break;
        case '2':
          console.log(eventData.message);
          break;
        default:          
          console.log(eventData.message);
      }
    }.

2 个答案:

答案 0 :(得分:1)

再阅读socket的Python文档。 (https://docs.python.org/2/library/socket.html)如果你看,它就在那里。 (但不要这样做!)

您显然正在尝试连接到HTTPS服务器。使用套接字级I / O执行此操作是(几乎)零回报的大量额外工作。您应该使用HTTP / HTTPS库(例如https://docs.python.org/2/library/httplib.html)。这将处理HTTP协议处理以及HTTPS需要进行的SSL / TLS协商。如果你正在尝试"做" WebSockets,也有库。

更新 - 我没有意识到你的目的是什么。虽然我坚持使用Python中的通用 HTTP / HTTPS工作的建议,但是" socketIO"库在这种情况下更适合;请参阅@ kichik的回答。

作为一般建议,如果您尝试使用现有协议或服务,首先应该查找该特定库的库或绑定。从头开始实施""应该是你的最后一招。

答案 1 :(得分:1)

看起来您正在尝试使用Python连接到Socket.io。有library for that

使用以下方式安装:

pip install socketIO-client

然后使用类似的东西:

socketToken = '....'

from socketIO_client import SocketIO, LoggingNamespace

def on_connect():
    print('connect')

def on_disconnect():
    print('disconnect')

def on_reconnect():
    print('reconnect')

def on_event(*args):
    print('on_event', args)

socketIO = SocketIO('https://sockets.data.com?token=%s' % (socketToken,))
socketIO.on('connect', on_connect)
socketIO.on('disconnect', on_disconnect)
socketIO.on('reconnect', on_reconnect)
socketIO.on('event', on_event)
socketIO.wait()