• 想实现网页前端和后端的数据同步交互,就有必要使用 websocket 的方式进行通信。

  • python websocket github 地址:git@github.com:Aplexchenfl/python-websocket-server.git

  • 下载之后:

    ECM_5412@chenfl:/var/www/html$ ls
client.html README.md server.py setup.py tests websocket_server
  • 其中,服务端的代码如下:

    vim server.py
    from websocket_server import WebsocketServer
// 当新的客户端连接时会提示
# Called for every client connecting (after handshake)
def new_client(client, server):
print("New client connected and was given id %d" % client['id'])
server.send_message_to_all("Hey all, a new client has joined us") // 当旧的客户端离开
# Called for every client disconnecting
def client_left(client, server):
print("Client(%d) disconnected" % client['id']) // 接收客户端的信息。
# Called when a client sends a message
def message_received(client, server, message):
if len(message) > 200:
message = message[:200]+'..'
print("Client(%d) said: %s" % (client['id'], message)) PORT=9001
server = WebsocketServer(PORT, "0.0.0.0")
server.set_fn_new_client(new_client)
server.set_fn_client_left(client_left)
server.set_fn_message_received(message_received)
server.run_forever()
    // 通过 python3  启动这个客户端
python3 server.py
  • 客户端代码如下:

    <html>
<head>
<title>Simple client</title> <script type="text/javascript"> var ws; function init() {
// 获取服务端ip
var ip_addr = document.location.hostname;
window.WebSocket = window.WebSocket || window.MozWebSocket;
ws = new WebSocket('ws://' + ip_addr +':9001'); // 申请新的客户端 // Connect to Web Socket
//ws = new WebSocket("ws://localhost:9001/"); // Set event handlers.
ws.onopen = function() {
output("onopen");
}; ws.onmessage = function(e) {
// e.data contains received string.
output("onmessage: " + e.data);
}; ws.onclose = function() {
output("onclose");
}; ws.onerror = function(e) {
output("onerror");
console.log(e)
}; } function onSubmit() {
var input = document.getElementById("input");
// You can send message to the Web Socket using ws.send.
ws.send(input.value);
output("send: " + input.value);
input.value = "";
input.focus();
} function onCloseClick() {
ws.close();
} function output(str) {
var log = document.getElementById("log");
var escaped = str.replace(/&/, "&amp;").replace(/</, "&lt;").
replace(/>/, "&gt;").replace(/"/, "&quot;"); // "
log.innerHTML = escaped + "<br>" + log.innerHTML;
} </script>
</head>
<body onload="init();">
<form onsubmit="onSubmit(); return false;">
<input type="text" id="input">
<input type="submit" value="Send">
<button onclick="onCloseClick(); return false;">close</button>
</form>
<div id="log"></div>
</body>
</html>
    //  通过网页启动客户端。

websocket 初步使用经验(python)的更多相关文章

  1. 初步学习python

    自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...

  2. Day1 初步认识Python

    天气有点阴晴不定~ (截图来自----------金角大王) 1.学习了计算机概论(CPU/Memory/Disk,memory的存在是为了解决信息传输产生的时延) CPU:精简指令集(RISC)-- ...

  3. WebSocket client for python

    Project description websocket-client module is WebSocket client for python. This provide the low lev ...

  4. 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块

    孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...

  5. OKEX websocket API 连接Python范例

    因为 websocket-client 新版的各种大脑降级设计 很多功能无法使用需要安装老版本websocket-client的包才能正常使用 pip3 install websocket-clien ...

  6. (一)初步了解python

    python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. Py ...

  7. 初步理解Python进程的信号通讯

    Reference: http://www.jb51.net/article/63787.htm 信号的概念 信号(signal)--     进程之间通讯的方式,是一种软件中断.一个进程一旦接收到信 ...

  8. python初步学习-Python模块之 re

    re 正则表达式 python正则表达式在线检验网站 python re正则表达式语法 匹配字符 语法 解释 表达式 匹配实例 . 匹配任意除"\n"以外的任何字符 a.c abc ...

  9. python初步学习-python 模块之 json

    json 模块 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写.一般API返回的数据大多是 JSON.XML,如果返回JSON的话,将获取 ...

随机推荐

  1. Linux终端监控工具之dstat

    1.安装 yum install dstat 2.示例 1)直接跟数字,表示#秒收集一次数据,默认为一秒:dstat 5表示5秒更新一次 这是默认输出显示的信息: CPU状态:CPU的使用率.这项报告 ...

  2. HDUOJ---3743Frosh Week(BIT+离散化)

    Frosh Week Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. Python学习笔记014——生成器Generator

    1 生成器定义 在Python中,一边循环一边计算的机制,称之为生成器(generator). 生成器是一个迭代器. 含有yield语句的函数是生成器函数,该函数被调用时返回一个生成器对象(yield ...

  4. PO_从PO追溯PR的方式和表(分析)

    2014-06-03 Created By BaoXinjian

  5. Service和广播联合更新UI的例子

    sa111111 于 2010-11-19 10:56 发表在 [Android实例] [复制链接] [只看楼主] [上一主题] [下一主题]   在Android中,异步更新UI,通常我们会选用Ha ...

  6. iOS开发打包

    ios11个论坛地址   邓白氏编码    邓白氏申请 http://blog.fir.im/faq/ AdHoc,InHouse,App Store Account Type: InHouse  ( ...

  7. 3dmax 物体的真正局部空间原点

    假设在3dmax中创建一个 长x宽x高=1cm x 1cm x 1cm 的单位立方体,则默认局部坐标系原点在底面中心,进入 “层次”面板->轴->调整轴,按下“仅影响轴”,再点“居中到对象 ...

  8. unity5 Text

    unity5中,添加Text对象: 在其它对象的脚本中如果想引用此Text,则应定义: public UnityEngine.UI.Text myText; 然后把对象拖到变量上即可. 注: 1,需要 ...

  9. Java:几个正则式应用(检查汉字、日期、EMAIL、手机号码的合法性,替换字符串等)

    1. 检查输入是否为合法汉字 /** * 判断输入字符是否为有效汉字 * @param str 字符 * @return 是否合法汉字 */ public static boolean isValid ...

  10. 解决fonts.googleapis.com不能访问,导致网页打不开

    最近,访问linode.com网站,突然发现网速好慢,老是打不开网页.分析一下网页才知道,原来使用了fonts.googleapis.com 打不开的原因就很明显了,咋办呢?百度啊,百度,最后,终于找 ...