首页 > 其他分享 >socket通信

socket通信

时间:2023-09-15 09:35:43浏览次数:43  
标签:socket 通信 server start client ws message def

# coding=utf-8

# 安装websocket相关库
# pip install websocket
# pip install websocket-client

import json
import websocket
from threading import Thread
import time


def on_message(ws, message):
    print(json.loads(message))


def on_error(ws, error):
    print(error)


def on_close(ws,a,b):
    print("### closed ###")


def on_open(ws):
    print("### open ###s")


if __name__ == "__main__":
    # url = "ws://localhost:9003"
    url = "ws://123.57.208.174:8888"
    # url = "ws://192.168.3.134:9003"
    ws = websocket.WebSocketApp(url, on_message=on_message, on_error=on_error, on_close=on_close)
    ws.on_open = on_open
    ws.run_forever()

  服务端

from websocket_server import WebsocketServer
msg_queue = queue.Queue()


def new_client(client, server):
    print('开始连接1111111')


# 接收到客户端消息时触发
def message_received(client, server, message, msg=None):
    pass


# 客户端关闭连接时触发
def client_left(client, server):
    # server.send_message_to_all(json.dumps("close"))
    print('断开连接22222')


def start_server(server):
    t_start_server = threading.Thread(target=send_msg, args=(server,),daemon=True)
    t_start_server.start()

    server.set_fn_new_client(new_client)
    server.set_fn_message_received(message_received)
    server.set_fn_client_left(client_left)
    server.run_forever()

def send_msg(server):
    while True:
        message = msg_queue.get()
        # if info_data:
        #     data = info_data[0]
        # server.send_message_to_all(f'111:2222:333333,{msg}')
        # if len(info_data) > 0:
        #     message = info_data[0]
        #     if message:
        print('message', message)
        server.send_message_to_all(json.dumps(message))

        t_start_server = threading.Thread(target=start_server, args=(server,), daemon=True)
        t_start_server.start()

 

标签:socket,通信,server,start,client,ws,message,def
From: https://www.cnblogs.com/daien522556/p/17704099.html

相关文章

  • udp通信中变长结构体的存在意义?
    在UDP通信中,使用变长结构体(又称为灵活数组成员)的存在意义是为了在不固定大小的数据报中传输可变长度的数据。在你的示例中,结构体定义了一个变长结构体,其中包含一个整型变量`size`和一个大小为0的字符数组`data`。通过将字符数组大小设置为0,你可以根据实际数据的长度在运行时分......
  • js浏览器通信postMessage
    1、背景:一个应用中内嵌了iframe,外层应用需要知道iframe做了一些具体的操作来更新页面,所以需要用到postMessage2、代码模块发起方:window.parent.postMessage({type:'sign-event',//事件名,内外层统一data:{data:data//需要传递的参数},......
  • Vue学习四:组件的三大组成部分、组件通信和进阶语法
    一、组件的三大组成部分<template>里面只能有一个根元素<style>全局样式(默认):影响所有组件局部样式:scoped下样式,只作用于当前组件<script>el根实例独有,data是一个函数,其他配置项一致二、scoped设置局部样式默认情况:写在组件中的样式会全局生效→因此很容易造成多......
  • 应用层通信协议设计
    一、应用层通信协议概述TCP/UDP是基于字节流的传输层通信协议,对于其的编程是基于IO流编程,所谓“流”,就是没有界限的一长串二进制数据。TCP/UDP作为传输层协议,并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的划分。所以在业务上一个完整的数据包在进行传......
  • How to fix java.net.SocketException: Too many files open in tomcat
    NotmanyJavaprogrammersknowsthatsocketconnectionsaretreatedlikefilesandtheyusefiledescriptor,whichisalimitedresource.Differentoperatingsystemhasdifferentlimitsonnumberoffilehandlestheycanmanage.Oneof......
  • Teamcenter SOA 挂关系,报服务器通信丢失的错误
    问题:handler调用SOA服务批量挂关系的时候,出现了Teamcenter与服务器通信丢失的错误*****Exceptioncaughtincom.teamcenter.clientx.AppXExceptionHandler.handleException(InternalServerException).Theserverreturnedaninternalservererror.操作执行期间,与Team......
  • 通信系统的性能指标
    主要性能指标:有效性(速度)、可靠性(质量)有效性模拟通信系统中:带宽数字通信系统中:码元传输速率(码元速率、传码率)单位时间(每秒)内系统传输的码元符号的数目,单位为波特(Baud),用\(......
  • 数据通信网络之IPv6以太网二层交换
    文章及资源归档至【AIShareLab】,回复通信系统与网络可获取。一、实验目的掌握VLAN、Trunk的基础配置。掌握以太网链路聚合的基础配置。掌握路由器子接口的配置,以及通过子接口实现VLAN之间互通的方法(单臂路由)二、实验环境及网络拓扑本实验模拟一个典型的简单园区网络,如图1所......
  • 关于TCP 和 UDP 的 Socket 调用
    在网络层,Socket函数需要指定到底是IPv4还是IPv6,分别对应设置为AF_INET和AF_INET6。另外,还要指定到底是TCP还是UDP。TCP协议是基于数据流的,所以设置为SOCK_STREAM,而UDP是基于数据报的,因而设置为SOCK_DGRAM。TCP的服务端要先监听一个端口,一般是先调用bind函数,给这......
  • uniapp项目实践总结(十五)使用websocket实现简易聊天室
    导语:在一些社交软件中,经常可以看到各种聊天室的界面,接下来就总结一下聊天室的原理个实现方法,最后做一个简易的聊天室,包括登录/登出、加入/离开房间、发送接收聊天消息等功能。目录准备工作原理分析组件实现实战演练服务端搭建案例展示准备工作在pages/index文件夹下......