Skip to content

A danmaku server based on WebSocket. 弹幕服务器,基于WebSocket。

Notifications You must be signed in to change notification settings

mugendainayumeatono/danmu-server

Repository files navigation

danmu-server

David deps

弹幕服务器,其客户端项目见danmu-client

欲使用此项目,客户端需要使用对应的版本。已发布的服务端均已写明对应的客户端版本号,开发分支内的服务端版本仅对应开发分支的客户端。

功能特色

  • 跨平台;
  • 房间功能;
  • 后台管理;
  • 弹幕记录与搜索(需要开启数据库);
  • 黑名单功能;
  • 关键词替换、拦截功能;
  • 弹幕记录;
  • 扩展;
    • 新浪微博登录扩展(需要开启缓存);
    • 自动封禁功能扩展(需要开启缓存);
    • 审核扩展;
  • 删除单条弹幕功能;
  • 易于部署,简单高效。

后台截图

后台截图

一些警告

稳定版请于Release手动下载。

部署方式

检查环境

Nodejs

必须安装Nodejs。强烈推荐使用最新版本Nodejs。

在Node 5.1+ / 6.x使用

无需任何附加操作,直接使用npm start就可以启动。

在Node 4.x使用

你需要先用babel编译后才能使用。

首先,你需要安装babel-cli: npm install babel-cli -g,接着进入本项目根目录下进行编译:

npm run install-babel
npm run compile
npm install

编译后,即可npm start启动。

在Node 0.12使用

先按照Node 4.0的方法进行编译,编译后使用npm run start-0.12启动。

数据库

如使用csv,可无视此节。

默认使用MySQL数据库。如需使用,需检查MariaDBMySQL的安装状态。支持5.0+。安装完成后,请创建相应的数据库。

如使用MongoDB数据库,请检查MongoDB的安装状态。然后需要在安装完成后执行:npm install mongodb

缓存

如不使用新浪微博与自动封禁功能,可无视此节。

默认使用memcached。如需使用,请检查Memcached(Linux)的安装状态。Windows用户请自行查找适合的Memcached版本。

如果要用阿里云开放缓存服务OCS,需要在安装完成后执行:npm install aliyun-sdk

直接安装

  1. 配置MariaDB,创建数据库等,不需要创建数据表。
  2. 修改config.js,使其参数与环境相符。
  3. 切换到命令行或终端,cd到程序所在目录执行npm install,安装程序依赖库。
  4. 现在,你可以直接npm start启动。

Docker安装

直接用Docker安装的话,镜像内是含MariaDB的。如果不需要,请根据Dockerfile内的提示手动删除。

  1. 安装Docker
  2. config.js调整配置。
  3. docker build -t="zsxsoft/danmu-server:" . && docker run -t -i -p 3000:3000 "zsxsoft/danmu-server"

DaoCloud安装

DaoCloud下安装,如使用服务集成的MySQL的话,请根据Dockerfile内的提示手动删除MariaDB相关内容。不需要修改数据库信息,程序会自行检测。

升级

1.0.5 -> 1.0.6

  • 在每个房间内增加hostname配置,类型为数组,用于将房间与域名绑定

网页接口

GET /

可以直接发布最简单的弹幕。

GET /advanced

可以发布高级弹幕(需要密码)

GET /manage

可以进行后台管理

GET /realtime

可以实时接收弹幕并直接删除或封禁(需要密码)

配置说明

以下标有*的配置项,运行时不可在后台修改。

	"rooms": {
		"房间1": {
			* "hostname": ["test.zsxsoft.com", "localhost", "127.0.0.1"], 
			* "display": "房间显示名",
			* "table": "对应MySQL的数据表、MongoDB的集合", 
			"connectpassword": "客户端连接密码",
			"managepassword": "管理密码",
			"advancedpassword": "高级弹幕密码",  
			"keyword": {
				"block": /强制屏蔽关键词,正则格式。/
				"replacement": /替换关键词,正则格式/,
				"ignore": /忽略词,正则格式/
			},
			"blockusers": [
				"默认封禁用户列表"
			],
			"maxlength": 弹幕堆积队列最大长度, 
			"textlength": 每条弹幕最大长度, 
			* "image": {
				* "regex": /图片弹幕解析正则,正则格式,不要修改/ig,
				* "lifetime": 每个图片给每条弹幕增加的存货时间 
			},
			"permissions": { // 普通用户允许的弹幕权限
				"send": 弹幕开关;关闭后无论普通用户还是高级权限都完全禁止弹幕。, 
				"style": 弹幕样式开关, 
				"color": 颜色开关, 
				"textStyle": CSS开关, 
				"height": 高度开关, 
				"lifeTime": 显示时间开关, 
			}
		},
		"房间ID2": {
			// 同上
		}
	},
	* "database": { // 数据库
		* "type": "数据库类型(mysql / mongo / csv / none)",
		* "server": " 数据库地址(mysql / mongo)",
		* "username": "数据库用户名(mysql / mongo)",
		* "password": "数据库密码(mysql / mongo)",
		* "port": "数据库端口(mysql / mongo)",
		* "db": "数据库(mysql / mongo)", 
		* "retry": 24小时允许断线重连最大次数,超过则自动退出程序。24小时以第一次断线时间计。(mysql),
		* "timeout": 数据库重连延时及Ping(mysql), 
		* "savedir": "指定文件保存位置(csv)",
	},
	"websocket": {
		"interval": 弹幕发送间隔
		"singlesize": 每次弹幕发送数量
	},
	* "http": {
		* "port": 服务器HTTP端口, 
		* "headers": {}, // HTTP头
		* "sessionKey": "随便写点,防冲突的"
	},
	* "cache": {
		* "type": "缓存类型(memcached / aliyun)", 
		* "host": "缓存服务器地址,可用socket", 
		* "auth": 打开身份验证,  
		* "authUser": 身份验证账号,
		* "authPassword": 身份验证密码,
	},
	"ext": {
		// 扩展
	}
}

常见问题

数据库相关

{ [Error: Connection lost: The server closed the connection.] fatal: true, code: 'PROTOCOL_CONNECTION_LOST' }

请把MySQL的wait_timeout设置得大一些。

搭配项目

流程图

流程图

协议

The MIT License (MIT)

博文

弹幕服务器及搭配之透明弹幕客户端研究结题报告

弹幕服务器及搭配之透明弹幕客户端研究中期报告

弹幕服务器及搭配之透明弹幕客户端研究开题报告

开发者

zsx - http://www.zsxsoft.com / 博客 - http://blog.zsxsoft.com

About

A danmaku server based on WebSocket. 弹幕服务器,基于WebSocket。

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 61.3%
  • HTML 35.0%
  • Shell 1.9%
  • CSS 1.4%
  • Python 0.4%