Cómo se conecta Python a websocket
Hay un ejemplo a continuación, que se basa en la versión python27. Primero debe instalar websocket-client.
El proceso aproximado es el siguiente, los datos específicos a transmitir, o necesita conocer las disposiciones de comunicación de mensajes entre el cliente y el servidor, y cambiarlos según sus propias necesidades #-*- ?codificación: utf-8? -*-
importar?sys
desde?socket?import?*-
desde?sys
desde?utf-8 ?-*-
importar?sys
desde?socket?import?*
importar?json,?time,? hilo
desde?websocket?import?create_connection
desde?websocket?connection
recargar(sys)
sys.setdefaultencoding(" utf8")
#?{
#?127.0.0.1',
#?PORT':?10086
#? }
#pip?install?websocket-client
clase?Cliente():
def?__init__(self):
#Llame al método create_connection para crear un enlace websocket
#Cambie la dirección del enlace a la suya
self.ws?=?create_connection("ws://47.93.91.89: 10086/nombre/jeje")
#Construya un hilo para monitorear los datos enviados por el servidor al cliente. datos
self.trecv?=?threading.Thread(target=self.recv)
self.trecv.start()
#Método de envío, en Se llama cuando se chatea usando una declaración de entrada, el valor predeterminado aquí es chat grupal ALL
def(self, content):
# El cuerpo del mensaje definido aquí debe reemplazarse por el suyo propio. El texto del mensaje se convierte en lo que necesitas.
msg={
"type":"POST",
"username":"jeje",
"sendto" : "TODOS",
"contenido": contenido
}
msg?=? json.dumps(msg)
self .ws.send(msg)
# Recibir datos enviados desde el servidor al cliente Mientras ws esté en estado conectado, continuará recibiendo datos
def? recv(self):
intenta:
mientras? self.ws.connected:
resultado?=?self.ws.recv()
imprimir?"recibido ?msg: " str(resultado)
excepto?Excepción, e:
pasar
# Enviar el método QUIT al cerrar para salir del enlace ws
def?close(self):
#Específicamente, necesita conocer el texto del mensaje de su enlace de salida si no lo hace. No lo sé, no necesitas usar este método
msg={
"type":"QUIT",
"username":"johanna ",
"content":"adiós a todos"
}
msg?=?json.dumps(msg)
self.ws.send(msg)
if?__name__? ==?__main__':
c=?Client()
# Continuar con el enlace ws estado cuando la entrada no es de salida y cierra el enlace si sale
mientras?True:
content?=?raw_input("¿Por favor?Enter (input?exit? to ?salir):")
if?content?== ?" salir":
c.close()
romper
más:
c.send(content)
time.sleep(1)