用到的弹幕播放器插件:dplayer.js(开源)

1.安装Redis
2.安装flask-redis包
pip install flask-redis
3.下载dplayer

页面搭建

1.引入资源

  <link rel="stylesheet" href="{{ url_for('static',filename='dplayer/dist/ DPlayer.min.css') }}">
<script src="{{ url_for('static',filename='dplayer/plugin/flv.min.js') }}"></script>
<script src="{{ url_for('static',filename='dplayer/plugin/hls.min.js') }}"></script>
  <script src="{{ url_for('static',filename='dplayer/dist/DPlayer.min.js') }}"></script>

2.添加样式

<!--样式-->
<style>
.dplayer-comment-setting-type>label{ display: inline;}
</style>

3.播放器样式

<!--播放器 -->
<div class="col-md-8">
<div id="dplayer1" style="height:500px;width: 774px;"></div>
</div>

4.弹幕js

<!--弹幕js-->
<script>
var dp1 = new DPlayer({
element: document.getElementById('dplayer1'),
video: {
url: "播放地址(电影文件地址)(例:{{ url_for('static',filename='uploads/'+movie.url) }})",
  },danmaku: {
  id: '电影ID'(例:{{movie.id}}),
  api: "API地址(例:/tm/)"
}
});
</script>
<!--右侧添加滚动条-->
<div class="panel-body" style="height:459px;overflow:scroll;">

视图处理等

1.在__init__.py中

<!--使 用 方法-->
from flask.ext.redis import FlaskRedis
app.config["REDIS_URL"] = "redis://localhost:6379/0"
rd = FlaskRedis(app)

2.在视图层

API地址视图处理
#视图处理
@home.route("/tm/", methods=["GET", "POST"])
def tm():
import json
from app import rd
if request.method == "GET":
id = request.args.get('id')
key = "movie" + str(id)
if rd.llen(key):
msgs = rd.lrange(key, 0, 2999)
res = {
"code": 1,
"danmaku": [json.loads(v) for v in msgs]
}
else: res = {
"code": 1,
"danmaku": []
}
resp = json.dumps(res)
if request.method == "POST":
data = json.loads(request.get_data())
msg = {
"__v": 0,
"author": data["author"],
"time": data["time"],
"text": data["text"],
"color": data["color"],
"type": data['type'],
"ip": request.remote_addr,
"_id": datetime.datetime.now().strftime("%Y%m%d%H%M%S") + uuid.uuid4().hex,
"player": [ data["player"]
]
}
res = { "code": 1, "data": msg
}
resp = json.dumps(res)
rd.lpush("movie" + str(data["player"]), json.dumps(msg))
from flask import Response
return Response(resp, mimetype='application/json')

Flask结合Redis消息队列实现电影弹幕的更多相关文章

  1. redis消息队列简单应用

    消息队列出现的原因 随着互联网的高速发展,门户网站.视频直播.电商领域等web应用中,高并发.大数据已经成为基本的标识.淘宝双11.京东618.各种抢购.秒杀活动.以及12306的春运抢票等,他们这些 ...

  2. logstash解耦之redis消息队列

    logstash解耦之redis消息队列 架构图如下: 说明:通过input收集日志消息放入消息队列服务中(redis,MSMQ.Resque.ActiveMQ,RabbitMQ),再通过output ...

  3. 预热一下吧《实现Redis消息队列》

    应用场景 为什么要用redis?二进制存储.java序列化传输.IO连接数高.连接频繁 一.序列化 这里编写了一个java序列化的工具,主要是将对象转化为byte数组,和根据byte数组反序列化成ja ...

  4. Redis 消息队列的实现

    概述 Redis实现消息队列有两种形式: 广播订阅模式:基于Redis的 Pub/Sub 机制,一旦有客户端往某个key里面 publish一个消息,所有subscribe的客户端都会触发事件 集群订 ...

  5. java-spring基于redis单机版(redisTemplate)实现的分布式锁+redis消息队列,可用于秒杀,定时器,高并发,抢购

    此教程不涉及整合spring整合redis,可另行查阅资料教程. 代码: RedisLock package com.cashloan.analytics.utils; import org.slf4 ...

  6. (转)java redis使用之利用jedis实现redis消息队列

    应用场景 最近在公司做项目,需要对聊天内容进行存储,考虑到数据库查询的IO连接数高.连接频繁的因素,决定利用缓存做. 从网上了解到redis可以对所有的内容进行二进制的存储,而java是可以对所有对象 ...

  7. spring mvc redis消息队列

    通常情况下,为了提高系统开发的灵活性和可维护度,我们会采用消息队列队系统进行解耦.下面是一个采用spring redis实现的消息队列实例,但此实例会由于网络延迟和阻塞等情况导致消息处理的延时,因而不 ...

  8. Redis笔记(七)Java实现Redis消息队列

    这里我使用Redis的发布.订阅功能实现简单的消息队列,基本的命令有publish.subscribe等. 在Jedis中,有对应的java方法,但是只能发布字符串消息.为了传输对象,需要将对象进行序 ...

  9. 使用jedis实现Redis消息队列(MQ)的发布(publish)和消息监听(subscribe)

    前言: 本文基于jedis 2.9.0.jar.commons-pool2-2.4.2.jar以及json-20160810.jar 其中jedis连接池需要依赖commons-pool2包,json ...

随机推荐

  1. MySQL查询50例

    创建表和关系 /* 创建表 */ /*年级表*/ DROP TABLE IF EXISTS `class_grade`; CREATE TABLE `class_grade` ( `gid` int( ...

  2. JS常用工具函数(持续记录)

    1.设置获取cookie //方式1 //设置cookie function SetCookie(name, value)//两个参数,一个是cookie的名字,一个是值 { var Days = 3 ...

  3. Vue, React, AngularJS, and Angular2. 我们对流行JavaScript框架们的选择

    2017-08-04 前端大全 (点击上方公众号,可快速关注) 英文:ANTONI ZOLCIAK  译文:众成翻译 www.zcfy.cc/article/vue-react-angularjs-a ...

  4. 【sping揭秘】13、Spring AOP一世&二世

    Spring AOP一世 Spring AOP中的advice Before advice 这个就是在方法执行之前执行,也就是在对应的joinpoint之前 spring AOP二世 开启aspect ...

  5. CLR关于语言文化的类型一CultureInfo类和字符串与线程的关联

    .Net Frameword使用System.Globalization.Culture类型表示一个"语言/国家"对(根据RFC 1766标准).例如,'en-US'代表美国英语, ...

  6. 【从0到1学Web前端】CSS定位问题三(相对定位,绝对定位) 分类: HTML+CSS 2015-05-29 23:01 842人阅读 评论(0) 收藏

    引子: 开始的时候我想先要解决一个问题,怎么设置一个div盒子撑满整个屏幕? 看下面的html代码: <body> <div id="father-body"&g ...

  7. 推荐几个 WebSocket 服务端实现

    http://netty.io/http://socket.io/https://github.com/StackExchange/NetGainhttps://github.com/SignalR/ ...

  8. Tomcat中配置Url直接访问本地其他磁盘

    在配置 Tomcat serserver.xml 中配置 <Context path="/image" docBase="E:\image" debug= ...

  9. WPF中Grid的行的Height和列的Width根据内容自适应

    Grid中RowDefinition的Height和ColumnDefinition的设置都有三种: 1. 具体数值,固定不变: 2. * 星号,如: 2*,5*,8*: 分母为(2+5+8=15), ...

  10. Linux内核升级导致无法启动,Kernel panic - not syncing Unable to mount root fs on unknown block(0,0)

    问题原因:内核的某次升级,导致系统无法启动. 首先进入recovery模式:引导界面选择-->Ubuntu高级-->出现的选项中选择能够启动的recovery模式(几个内核版本分别试一下) ...