搭建属于你自己的弹幕服务器-服务端

前言

本篇教程适用于现场活动等用途,通过 Web 接受弹幕数据,并使用客户端显示叠加层。


[hermit auto=”0″ loop=”1″ unexpand=”0″ fullheight=”0″]netease_songlist#:426881487[/hermit]

基础环境部署

作为一台服务器,首先我们需要安装最基础的工具。
运行以下代码

#debian
apt-get install wget curl screen http git vim
#Centos
yum install wget curl screen http git vim

安装完基础工具后,我们开始安装弹幕服务器的后端,首先我们需要安装 Nodejs 执行环境,在这里我们使用 Easyenv 一键安装。

运行以下代码,选择安装 Nodejs 6.x 版本

wget https://raw.githubusercontent.com/FunctionClub/Easyenv/master/easyenv.sh
bash easyenv.sh

弹幕服务安装

Nodejs 部署完成后,我们就可以正式进入服务端的部署了

首先,我们需要获得弹幕服务器的执行文件
运行以下代码

git clone https://github.com/zsxsoft/danmu-server

获取执行文件后,我们需要安装一些 Nodejs 的基本库
运行以下代码

npm install

到这里,安装就已经完成了,下面我们需要进行服务端的配置

服务端配置

弹幕服务的配置文件为 config.js,日常使用只需修改它。
以下为一份 config.js 示例文件。

module.exports = {
	"rooms": {
		"default": {
			"hostname": ["test.zsxsoft.com", "danmu.zsxsoft.com"], 
			"cdn": false,
			"display": "默认",
			"table": "room_default", // 数据表
			"connectpassword": "123456", // 客户端连接密码
			"managepassword": "123456", // 管理密码
			"advancedpassword": "123456", // 高级弹幕密码
			"keyword": {
				"block": /^$/,
				// 强制屏蔽关键词
				"replacement": /^$/,
				// 替换关键词
				"ignore": /^$/
					// 忽略词
			},
			"blockusers": [ // 封禁用户
				"test"
			],
			"maxlength": 100, // 队列最大长度
			"textlength": 1000, // 弹幕最大长度
			"image": {
				"regex": /\[IMG WIDTH=(\d+)\](.+?)\[\/IMG\]/ig, // 图片弹幕
				"lifetime": 300 // 每个图片给每条弹幕增加的时间
			},
			"permissions": { // 普通用户允许的弹幕权限
				"send": true, // 弹幕开关;关闭后无论普通用户还是高级权限都完全禁止弹幕。
				"style": false, // 弹幕样式开关
				"color": false, // 颜色开关
				"textStyle": false, // CSS开关
				"height": false, // 高度开关
				"lifeTime": false, // 显示时间开关
				"sourceCode": false, // 自定义高级JavaScript弹幕开关
			}
		},
		},
	"database": {
		"type": "csv", // 数据库类型(mysql / mongo / csv / none)
		"server": "127.0.0.1", // 数据库地址(mysql / mongo)
		"username": "root", // 数据库用户名(mysql / mongo)
		"password": "123456", // 数据库密码(mysql / mongo)
		"port": "3306", // 数据库端口(mysql / mongo)
		"db": "danmu", // 数据库(mysql / mongo)
		"retry": 10, // 24小时允许断线重连最大次数,超过则自动退出程序。24小时以第一次断线时间计。(mysql)
		"timeout": 1000, // 数据库重连延时及Ping(mysql)
		"savedir": "./", // 指定文件保存位置(csv)
	},
	"websocket": {
		"interval": 10, // 弹幕发送间隔
		"singlesize": 5 // 每次弹幕发送数量
	},
	"http": {
		"port": 3000, // 服务器端口
		"headers": { // HTTP头
			//"Access-Control-Allow-Origin": "*",
			//"Access-Control-Allow-Methods": "POST"
		},
		"sessionKey": "hey"
	},
	"cache": {
		"type": "none", // 缓存类型,支持memcached和aliyun。后者需要npm install aliyun-sdk
		"host": "127.0.0.1:11211", // 缓存服务器地址,可用socket
		"auth": false, // 是否打开身份验证
		"authUser": "", // 身份验证账号
		"authPassword": "" // 身份验证密码
	},
	"ext": {
		/*
		"weibo": { // 新浪微博扩展
			"clientID": '', // App ID
			"clientSecret": '', // App Secret
			"callbackURL": 'http://test.zsxsoft.com:3000/auth/sina/callback', // 这里填写的是 网站地址/auth/sina/callback
			"requireState": true // 是否打开CSRF防御
		},*/
		"autoban": { // 自动封号扩展
			"block": 3, // 被拦截超过一定数字自动封号
		}, 
		/*"audit": { // 审核扩展
			
		},*/
		"livesync": {
			"unlimited": { // 房间名
				"liveUrl": "http://live.bilibili.com/3" // 直播地址
			}
		}

	}
};

最后,我们需要启动弹幕服务器
运行以下代码

screen
npm start

运行原理

在最后,感谢 zsx 大佬编写的弹幕服务。
Github:https://github.com/zsxsoft/danmu-server

2 条评论

发表评论

*