广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3 websocket se
  • 727
分享到

Python3 websocket se

websocketse 2023-01-31 01:01:03 727人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

原文:https://blog.csdn.net/leemboy/article/details/79449819       websocket协议是基于tcp的一种新的网络协议。它实现了浏览器与服务器全双工(full

原文:https://blog.csdn.net/leemboy/article/details/79449819


     
websocket协议是基于tcp的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
       WEBSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范。

WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

在WebSocket api中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

浏览器通过 javascript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。

当你获取 Web Socket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。

以下 API 用于创建 WebSocket 对象。

var Socket = new WebSocket(url, [protocol] );



Websocket python3 Server实例


#!/usr/bin/env python

import asyncio
import websockets
import JSON


with open("web_so_cfg.json",'r') as load_f:
    global load_dict
    load_dict = json.load(load_f)
    
ipaddr=load_dict['server_url']
port=load_dict['server_port']
data_file=load_dict['data_file']
help_cmd=load_dict['help_cmd']
load_f.close()

print("ipaddr=",ipaddr)
print("port=",port)
print("data_file=",data_file)

file_name = data_file
top_items_name = ''


with open(file_name, 'r') as load_f:
    global load_dict_2
    load_dict_2 = json.load(load_f)


print('-----------------------------------')
for item in load_dict_2:
    top_items_name=top_items_name+item+'\n'
    print(item,'=',load_dict_2[item])
    
print('-----------------------------------')


async def ift_command_line(websocket, path):
    name = await websocket.recv()
    print("< {}".fORMat(name))

    ift_message = "ift_command_line: {}".format(name)

    ift_message_str=ift_message+"  test msg"
    '''
    await websocket.send(ift_message_str)
    print("> {}".format(ift_message_str))
    '''

    print (name)

    if name == 'help':
        with open("web_so_cfg.json",'r') as load_f:
            load_dict = json.load(load_f)
            help_cmd=load_dict['help_cmd']
        load_f.close()
        help_name='the command help: '+help_cmd
        ift_message = "ift_command_line: {}!".format(help_name)
        await websocket.send(ift_message)
        
    elif name == 'get-json-topitem':
        ift_message = "ift_command_line(from server): {}!".format(top_items_name)
        await websocket.send(ift_message)
    elif 'get-json-value-of' in name:
        str_array=name.split('of')
        item=str_array[1].strip()
        print (item)
        if item in load_dict_2:
            value=load_dict_2[item]
        else:
            value='null'
            
        print(value)
        ift_message = "ift_command_line(from server): {}!".format(value)
        await websocket.send(ift_message)
    else:
        error_infor=name +' is not a command!'
        ift_message = "ift_command_line(from server): {}!".format(error_infor)
        await websocket.send(ift_message)
start_server = websockets.serve(ift_command_line, ipaddr, port)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()


Websocket server配置文件web_so_cfg.json

{
    "server_url": "192.168.8.102",
    "server_port": "8765",
    "data_file": "Handbetrieb_Maske_b.JSON",
    "help_cmd":"get-json-topitem,get-json-value-of <itemname>,get-data,get-name,add-user,mod-user,mod-user-pwd,mod-user-service,create-json-with-name:value,parse-json-with-\"jsonstr\""
 }


Demo中使用的Json文件:Handbetrieb_Maske_b.JSON

{
    "current_tester": "SSTM",
    "current_materdata": "D:\\SVN\\Weishaupt_E01600\\image\\daten\\sw\\M1.sw",
    "specimen_type": "1 Ph",
    "selected_axis": "1",
    "current_power_supply_unit": "Sinamics NT 3Ph 600V/120A",

    "power_supply_controls": {
        "setpoint_voltage": {
            "current_value": 50,
            "unit": "V",
            "min_value": 0,
            "max_value": 600,
            "supported_precision": 0.1
        },
        "setpoint_frequency": {
            "current_value": 45.0,
            "unit": "Hz",
            "min_value": 45.0,
            "max_value": 75.0,
            "supported_precision": 0.1
        }
    },
    "load_Machine_controls": {
        "setpoint_speed": {
            "current_value": 0,
            "unit": "rpm",
            "min_value": 0,
            "max_value": 1000,
            "supported_precision": 0.1
        },
        "setpoint_current_limit_torque": {
            "current_value": 0,
            "unit": "Nmm",
            "min_value": 0,
            "max_value": 100,
            "supported_precision": 1
        },
        "setpoint_load_active": {
            "current_value": false
        }
    },
    "specimen_controls": {
        "setpoint_rotation_direction": {
            "current_value": "clockwise",
            "possible_values": [
                "clockwise",
                "counter clockwise"
            ]
        },
        "setpoint_speciment_power_supply_active": {
            "current_value": false
        },
        "setpoint_1uf_condensator_connected": {
            "current_value": false
        },
        "setpoint_2uf_condensator_connected": {
            "current_value": false
        },
        "setpoint_4uf_condensator_connected": {
            "current_value": false
        },
        "setpoint_7uf_condensator_connected": {
            "current_value": false
        },
        "setpoint_10uf_condensator_connected": {
            "current_value": false
        },
        "setpoint_20uf_condensator_connected": {
            "current_value": false
        },
        "setpoint_40uf_condensator_connected": {
            "current_value": false
        }
    },
    "measurement_setup_controls": {
        "setpoint_sample_rate": {
            "current_value": "20 Hz",
            "possible_values": [
                "20 Hz",
                "10 Hz",
                "1 Hz"
            ]
        },
        "setpoint_poweranalyzer_mode_set_to_local": {
            "current_value": false
        },
        "setpoint_countinous_measurement_recording_active": {
            "current_value": false
        }
    },

    "actions": [
        "shutdown_measurement",
        "start_resistance_measurement",
        "store_current_sample"
    ],

    "actual_values": [
        {
            "label": "time",
            "current_value": null,
            "unit": "s"
        },
        {
            "label": "angle",
            "current_value": null,
            "unit": "°"
        },
        {
            "label": "speed",
            "current_value": null,
            "unit": "rpm"
        },
        {
            "label": "torque",
            "current_value": null,
            "unit": "Nmm"
        },
        {
            "label": "p_mech",
            "current_value": null,
            "unit": "kW"
        },
        {
            "label": "frequency",
            "current_value": null,
            "unit": "Hz"
        },
        {
            "label": "voltage",
            "current_value": null,
            "unit": "V"
        },
        {
            "label": "current",
            "current_value": null,
            "unit": "A"
        },
        {
            "label": "p_electric",
            "current_value": null,
            "unit": "kW"
        },
        {
            "label": "Q_1",
            "current_value": null,
            "unit": "kVAR"
        },
        {
            "label": "S_1",
            "current_value": null,
            "unit": "kVA"
        },
        {
            "label": "cos_phi",
            "current_value": null,
            "unit": ""
        },
        {
            "label": "ETA_M",
            "current_value": null,
            "unit": ""
        },
        {
            "label": "Temp_1",
            "current_value": null,
            "unit": "°C"
        },
        {
            "label": "Temp_2",
            "current_value": null,
            "unit": "°C"
        },
        {
            "label": "Temp_3",
            "current_value": null,
            "unit": "°C"
        }
    ]
}


Websocket Python3 Client实例

#!/usr/bin/env python

import asyncio
import websockets
import json
with open("web_so_cfg.json",'r') as load_f:
     load_dict = json.load(load_f)
    
ipaddr=load_dict['server_url']
port=load_dict['server_port']
data_file=load_dict['data_file']
print("ipaddr=",ipaddr)
print("port=",port)
print("data_file=",data_file)

connect_addr_port='ws://'+ipaddr+':'+port
print("connect_addr_port=",connect_addr_port)

async def web_so_op():
    async with websockets.connect(connect_addr_port) as websocket:
        name = input("Enter the cmd--->> ")
        await websocket.send(name)
        print("> {}".format(name))

        greeting = await websocket.recv()
        print("< {}".format(greeting))

while True:
    asyncio.get_event_loop().run_until_complete(web_so_op())

Websocket JavaScript client实例

<!DOCTYPE html>  
<meta charset="utf-8" />

<html> 
<h1>WebSocket Test</h1>  
<head>  
    <script>
        var wsocket; 
  var flag=0;
  var ws_link;
        function Connect(){ 
   var url_port=document.getElementById("msg").value;
   if(flag==0){
    ws_link='ws://'+url_port;
    flag=1;
   }
   document.getElementById("receive_msg").innerHTML=ws_link;
            try{
    
               //wsocket=new WebSocket('ws://192.168.8.101:8765/');  
      wsocket=new WebSocket(ws_link); 
            }catch(e){  
                alert('error');  
                return;  
            }  
            wsocket.onopen = sOpen;  
            wsocket.onerror = sError;
            wsocket.onmessage= sMessage;
            wsocket.onclose= sClose;
        }  
        function sOpen(){
            alert('connect success!');
        }
        function sError(e){
            alert("error " + e);
   document.getElementById("receive_msg").innerHTML=e.data;
        }
        function sMessage(e){  
            alert('server says:' + e.data);
   document.getElementById("receive_msg").innerHTML='server says:' + e.data;
   ;
        }
        function sClose(e){
            alert("connect closed:" + e.code);
        }  
        function Send(){
        
            wsocket.send(document.getElementById("msg").value);
        } 
        function Close(){
            wsocket.close();
        }  
    </script>
</head>  
   
<body>  
<input id="msg" type="text">  
<button id="connect" οnclick="Connect();">Connect</button>  
<button id="send" οnclick="Send();">Send</button> 

<div id="receive_msg"></div>

</body>  
   
</html>  

--结束END--

本文标题: Python3 websocket se

本文链接: https://www.lsjlt.com/news/184941.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3 websocket se
    原文:https://blog.csdn.net/leemboy/article/details/79449819       WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full...
    99+
    2023-01-31
    websocket se
  • python3自动寻找COM口程序-se
    运行环境:电脑64位,python版本:32位-3.6.5程序及运行结果如下:import serial def com(): ser=serial.Serial() i=1 while i<10: ...
    99+
    2023-01-31
    程序 se
  • windows下python3.4的se
    http://blog.csdn.net/maoyongfan3/article/details/43309391 http://blog.csdn.net/shursulei/article/details/73881981 ...
    99+
    2023-01-31
    windows se
  • ajax(Tibco) 与 SQL se
    第一个窗口,先上图:               可见,TIBCO GI对于界面的处理能力是很强的.再附上相关文件: AppCanvas.xml 界面XML文件,用来描述界面元素.=========================...
    99+
    2023-01-31
    Tibco ajax se
  • Android Strongbox( Android Ready SE)
    Android Ready SE介绍 Android ready SE Alliance: 链接 GOOGLE成立 Android Ready SE Alliance 技术联盟,用于 SE 安全芯片标准的研发以及推广,将使得安卓系统原生支持...
    99+
    2023-08-17
    android
  • python 终极篇 cookie与se
    (1)cookie与session---------->>>>>>>>>>>>>>>>>>>>.>>&g...
    99+
    2023-01-30
    python cookie se
  • 【测试】python 模拟snmp-se
    如下脚本,模拟windows和linux上的snmp-agent,返回数据给snmp请求者。直接上代码吧:# -*- coding: utf-8 -*- import binascii, struct import socket impor...
    99+
    2023-01-31
    测试 python se
  • iPad使用UTM SE装Win7
    因工作需要,有的公文只能在windows系统下才能通过vpn及专用控件情况下审批,带个电脑嫌笨重,经测试,在ipad上通过虚拟机成功安装win7系统,当然还可以安装linux、macos等系统。现将过程记录如下,供感兴趣的朋友参考: 一、虚...
    99+
    2023-08-31
    ipad ios
  • 通过python获得header中的se
    在做接口自动化过程中,我们常常会用到用户登录后进行接口测试,那么我们如何进行获取header中的session呢。我们现在看一下以下代码:def session(DATA):#通过配置文件获得url地址,也可以写死在这里Url = Conn...
    99+
    2023-01-31
    python header se
  • Python学习笔记 --- 序列化Se
    序列化 (serialization) 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化, 它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。 序列化和反序列化的目的   1、以某种存储形式使自定义...
    99+
    2023-01-31
    学习笔记 序列化 Python
  • Java SE的应用场景有哪些
    Java SE(Java Standard Edition)是Java平台的标准版本,适用于多种应用场景。以下是其中一些常见的应用场...
    99+
    2023-10-07
    Java
  • java se与java的区别是什么
    Java是一门程序设计语言,它有三个版本,Java SE(标准版)、Java EE(企业版)和Java ME(微型版)。而Java SE只是一个使用Java进行编程的规范、框架,它不是一门编程语言。Java SE(java standard...
    99+
    2020-11-03
    java入门 java se java 区别
  • Windows 98 SE 简体中文第二版
    序列号:XDFJK-9GP3J-K4T7K-7GMDQ-HWDPG 下载地址:(复制以下链接用迅雷等下载工具自己下载!!!) http://ftp.cnjwedu.net/download   ...
    99+
    2023-05-23
    Windows 98 SE 简体中文
  • 关于Java SE数组的深入理解
    目录1、数组的基本概念1.1 我们为什么需要数组?1.2 数组的创建与初始化1.3 数组的使用1.4 数组的遍历 2、引用类型数组的深入讲解2.1 简单了解 JVM 的内存...
    99+
    2022-11-13
  • H3C SE 教程笔记——构建H3C高性
    第5篇    IP组播第18章    IP组播概述    IP组播技术实现了数据在IP网络中点到多点的高效传送,能够节约大量网络带宽、降低网络负载。通过IP组播技术可以方便地在IP网络之上提供一些增值业务,包括在线直播、网络电视、远程教育、...
    99+
    2023-01-31
    笔记 教程 高性
  • Java SE如何求解汉诺塔问题
    这篇文章主要介绍了Java SE如何求解汉诺塔问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.问题描述汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Towe...
    99+
    2023-06-29
  • WebSocket
    目录 一,什么是websocket 二,websocket的原理 三,websocket与http的关系 四,websocket解决的问题 1.http存在的问题 2.long poll(长轮询) 3.Ajax轮询 4.websocket的...
    99+
    2023-09-03
    web java
  • 【LinkedHashMap】| 深度剥析Java SE 源码合集Ⅴ
    目录 1. 概述2. 类图3. 属性4. 构造方法5. 创建节点6. 节点操作回调6.1 afterNodeAccess6.2 afterNodeInsertion6.3 afterNodeRemoval 7. 转换成数组8. ...
    99+
    2023-08-18
    java 开发语言 数据结构
  • 【Java SE】带你在String类世界中遨游!!!
    🌹🌹🌹我的主页🌹🌹🌹 🌹🌹🌹【Java SE 专栏】🌹🌹&#x...
    99+
    2023-12-22
    java 开发语言 数据库 git 开源
  • 【Java SE】带你识别什么叫做异常!!!
    🌹🌹🌹个人主页🌹🌹🌹 【🌹🌹🌹Java SE 专栏🌹🌹...
    99+
    2023-12-23
    java 算法 数据结构 人工智能 机器学习
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作