Loading

摘要: settings.py配置 # 存储在内存里 CHANNEL_LAYERS = { "default": { "BACKEND": "channels.layers.InMemoryChannelLayer", } } # 存储在redis 安装:pip3 install channels-redi 阅读全文
posted @ 2022-05-22 20:33 木子七 阅读(315) 评论(0) 推荐(0) 编辑
摘要: self代表当前用户客户端与服务端的连接对象,比如两客户端发来了两个连接,我们可以把两个连接放在一起 # 定义全局变量 CONN_List = [] class LiveConsumer(WebsocketConsumer): def websocket_connect(self, message) 阅读全文
posted @ 2022-05-22 20:24 木子七 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 客户端主动向服务端发起websocket连接,服务端接收到连接后通过(握手) 客户端 websocket socket = new WebSocket('ws://127.0.0.1/ws/'); 服务端 def websocket_connect(self, message): # 有客户端向后端 阅读全文
posted @ 2022-05-22 20:21 木子七 阅读(360) 评论(0) 推荐(0) 编辑
摘要: Django默认不支持websockey,需要Django支持的话需要安装第三方组件 django channels 是django支持websocket的一个模块。 1.安装 pip3 install channels # 安装 2.settings.py配置 #INSTALLED_APPS 中注 阅读全文
posted @ 2022-05-22 20:15 木子七 阅读(169) 评论(0) 推荐(0) 编辑
摘要: websocket协议原理 1.WebSocket协议是基于TCP的一种新的协议。WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符。它实现了浏览器与服务器全双工(full-duplex)通信。其本质是保持TCP连接,在浏览器和服务端通过Socket进行 阅读全文
posted @ 2022-05-22 20:01 木子七 阅读(104) 评论(0) 推荐(0) 编辑
摘要: websockey的模式就是在于当前端向后端发送请求创建一个websocket链连接之后,连接默认不断开,前端和服务端就维护了一个连接,前端可以通过连接给服务端发消息,服务端也可以通过连接给前端发消息,实现了双向通信,也叫双工通道 原来的web中: http协议:无状态&短连接 客户端主动连接服务端 阅读全文
posted @ 2022-05-22 19:53 木子七 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 长轮询: 当服务器收到前端发来的请求后,服务器端不会直接进行响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则进行响应, 如果一直没有数据,则到达一定的时间限制(服务器端设置)才返回,返回完之后,客户端再次建立连接,周而复始,基于事件的触发,一个事件接一个事件 长轮询处理流程 阅读全文
posted @ 2022-05-22 19:47 木子七 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 轮询:前端每隔固定时间向后台发送一次请求,询问服务器是否有新数据 轮询的工作流程 1.前端发送数据 2.后端接收处理数据 3.前端定时请求数据 4.后端返回新数据 一、发送-接收数据 // 前端 <div class="message" id="message"> <div> <input type 阅读全文
posted @ 2022-05-22 18:34 木子七 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 一、轮询 前端每隔固定时间向后台发送一次请求,询问服务器是否有新数据 缺点: 延迟,需要固定的轮询时间,不一定是实时数据 大量耗费服务器内存和宽带资源,因为不停的请求服务器,很多时候 并没有新的数据更新,因此绝大部分请求都是无效请求 二、长轮询 当服务器收到前端发来的请求后,服务器端不会直接进行响应 阅读全文
posted @ 2022-05-22 18:26 木子七 阅读(516) 评论(0) 推荐(0) 编辑
摘要: Q:为什么要引入多线程 A:提升程序运行的速度 进程和线程的定义 一个工厂,至少有一个车间,一个车间至少有一个工人,最终是工人在工作 一个程序,至少有一个进程,一个进程中至少有一个线程,最终是线程在工作 python程序运行时,内部会创建一个进程(主进程),在进程中创建了一个线程(主线程),由线程逐 阅读全文
posted @ 2022-05-22 17:25 木子七 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 主程序 # -*- coding: utf-8 -*- # @Time: 2022/5/20 22:26 # @Author: LiQi # @Describe: 主程序 import pygame from plane_sprites import * """飞机大战主程序""" class Pl 阅读全文
posted @ 2022-05-22 12:49 木子七 阅读(808) 评论(0) 推荐(0) 编辑
摘要: 添加并监听英雄发射子弹事件 class Hero(GameSprite): def __init__(self): # 调用父类方法,设置image super().__init__('./images/me1.png', 0) # 设置英雄的初始位置 self.rect.centerx = SCR 阅读全文
posted @ 2022-05-22 12:48 木子七 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 创建英雄类 """英雄精灵""" class Hero(GameSprite): def __init__(self): # 调用父类方法,设置image super().__init__('./images/me1.png', 0) # 设置英雄的初始位置 self.rect.centerx = 阅读全文
posted @ 2022-05-22 12:04 木子七 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 使用定时器添加敌机 游戏启动后,每隔一秒出现一架敌方飞机 每架飞机向屏幕下方飞行,速度各不相同 没加敌机出现的水平位置也不进相同 当敌机从屏幕下方飞出,不会再飞回到屏幕中 定时器 pygame中使用pygame.time.set_timer()来添加定时器 所谓定时器,就是每隔一段时间,去执行一些动 阅读全文
posted @ 2022-05-22 02:09 木子七 阅读(608) 评论(0) 推荐(0) 编辑
摘要: 背景交替滚动 游戏启动后,背景图像不断的向下移动 在视觉上产生角色不断向上移动的错觉 游戏背景不断变化,游戏主角的位置报错不变 实现方案 创建两张背景图 第一张完全和屏幕重合,第二章在屏幕的正上方 两种图像一起向下运动,当当前角色的 rect.y>=屏幕高度时,说明已经移动到欧美下方 将移动到屏幕下 阅读全文
posted @ 2022-05-22 01:18 木子七 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 职责明确 新建plane_main.py 封装主游戏类 创建游戏对象 启动游戏 新建plane_sprites.py 封装游戏中所有需要使用的精灵子类 提供游戏的相关工具 #plane_sprites.py import pygame # 常量定义屏幕大小 SCREEN_RECT = pygame. 阅读全文
posted @ 2022-05-22 00:15 木子七 阅读(97) 评论(0) 推荐(0) 编辑