基于EmulatorJs的Docker实现Web端游玩模拟器

这篇具有很好参考价值的文章主要介绍了基于EmulatorJs的Docker实现Web端游玩模拟器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

或许大家都见过一些在线游玩fc、gbc等老游戏的网页了,这些网页使我们随时随地都能体验并回味一波老游戏的滋味,也能在上班的时候摸鱼,曾经我思考过这些网站的实现原理,想要模仿一下,自己搭建一个在线的模拟器网站。在参考了网络上各路大神的方案后我选择基于Emulator+Docker来实现。

这里要感谢B站的一位大佬,本文的搭建思路来自于他(已获得同意,感谢)。

文章链接:怀旧游戏web端EmulatorJs的Docker搭建教程 - 哔哩哔哩 (bilibili.com)

废话不多说,我们直接开始。

你需要的

一台Linux服务器(最好是云主机,也可以是虚拟机)。

步骤

一、下载镜像文件

为了降低搭建门槛,这里我演示用宝塔来添加和管理Docker容器,关于Linux系统如何安装宝塔面板可以百度一下宝塔官网,有详细的操作流程,简单快捷。

首先让我们下载Docker

emulatorjs,游戏,docker,linux,服务器,nginx

下载完毕后,启动它们(上面的绿色按钮开启),再点击下方的Dcoker管理器3.9.2。依次点击镜像管理、获取镜像、镜像名称输入linuxserver/emulatorjs:1.7.2,再点击获取镜像等待镜像下载完毕。

emulatorjs,游戏,docker,linux,服务器,nginx

如果下载失败或者太慢,可以尝试设置镜像加速。加速地址https://almtd3fa.mirror.aliyuncs.com/

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

二、创建容器

一般情况下,用宝塔面板下载好Docker后它会自动设置好环境变量的,我们可以直接使用相关命令创建好容器,这里要注意好端口映射的问题(宿主机端口看你喜好,但是容器内端口必须是固定的80和3000)。

首先我们创建好两个文件夹,用来存放EmulatorJs容器的配置文件和数据。可以使用mkdir命令创建,也可以在宝塔面板创建。

mkdir -p /usr/local/emulatorjs/config && mkdir /usr/local/emulatorjs/data
#这里的路径看你喜好,但要记住同步更改后面的容器创建命令。

emulatorjs,游戏,docker,linux,服务器,nginx

创建好两个文件后,我们接下来开始创建容器,容器的创建命令参考自官方文档与B站的克鲁斯-蓝眼大佬。

docker run -d --name emulatorjs1.7.2 -e PUID=1000 -e PGID=1000 -e TZ=Asia/Shanghai -p 8282:80 -p 8383:3000 -v /usr/local/emulatorjs/config:/config -v /usr/local/emulatorjs/data:/data linuxserver/emulatorjs:1.7.2

当然也可以通过宝塔来创建容器(还是建议运行上面命令,稳定方便)

emulatorjs,游戏,docker,linux,服务器,nginx

容器创建完毕后会自动运行。

emulatorjs,游戏,docker,linux,服务器,nginx

接下来我们尝试访问。

我们要选择暴露上面两个端口,这里选择的是8282和8383端口,如果你是云服务器,还需要额外设置安全组(我用的是阿里云服务器)。后记得关闭Linux系统自身的防火墙或者同步开放这两个端口。

emulatorjs,游戏,docker,linux,服务器,nginx

然后我们尝试访问管理后台:访问地址是  http://服务器ip:8383。比如http://192.168.10.2:8383

成功打开如下页面后,点击Download

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

下载完毕后,拿出你准备好的游戏资源吧!这款模拟器支持多种格式的游戏,如gba、gbc、nes等等,各种老游戏的资源网上也有许多。现在我们尝试下上传一款nes的魂斗罗。

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

添加一款游戏的流程就是这样啦,接下来就是激动人心的时刻。

我们访问游玩页面:访问地址是  http://服务器ip:8282。比如http://192.168.10.2:8282

emulatorjs,游戏,docker,linux,服务器,nginx

芜湖,加载成功,接下来介绍一下这个页面的操作。如果你后台上传了多款类型的游戏(比如既有gbc、又有nes),那么这里按键盘 ↑ ↓ 就是切换不同类型的模拟器。这里我只上传了nes,所以只有一种模拟器。切到你要玩的模拟器后,我们按键盘 → 就能进入该类型模拟器,然后按键盘 ↑ ↓ 就是选择游戏了,此时按键盘 ← 可以返回上一界面选择模拟器,按键盘 → 则是正式进入游戏。

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

如果加载完毕后还是黑屏,我们点击浏览器的返回按钮返回到选游戏的界面(也就是上面那个左边是模拟器,右边是游戏名的界面),再次按 → 键进入游戏即可秒加载成功。

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

当当当,忙活了这么久,你终于可以随时随地在上班的时候摸鱼了,你迫不及待想要回味一下童年,结果敲键盘aswd怎么没反应嘞???脏话即将脱口而出,别急,按下F1,下滑到Controls,我们设置下按钮先(这里不得不吐槽下,默认的是用↑↓←→控制方向,用左手控制攻击的异端(开个玩笑),至少我适应不了hhhhh)。

emulatorjs,游戏,docker,linux,服务器,nginx

还有一种方法是back到MainMenu,再选择Settings,选择input

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

设置完毕后再次按F1即可关闭设置界面,然后就能愉快的玩耍了。

emulatorjs,游戏,docker,linux,服务器,nginx

另外,手机浏览器打开也是能玩的(我用的小米浏览器)。

emulatorjs,游戏,docker,linux,服务器,nginx

三、登录验证

此时,如果你用的是虚拟机,那么安全问题倒是不必担忧,但是如果你用的是云服务器,那么像这样直接访问就能玩游戏、进后台的话,就跟裸奔一样。

因此,你还可以选择加上一层登录认证,方法多种多样,后端写个登录服务,前端弄个登录页面。这里楼主前端本领不够写不出好看的页面,所以直接用Nginx实现登录验证。

首先,你需要下载nginx(可以上网找资源、或者宝塔面板安装)。

emulatorjs,游戏,docker,linux,服务器,nginx

下载完nginx后,我们改下配置文件:

{
........

#添加下方server块,确保8181端口未被其它应用占用
    server {
        listen       8181;
        server_name  localhost;
        
        #开启登录校验功能
        auth_basic on;
        #htpasswd命令生成的密码文件(比如文件名admin,放到了/usr/local/nginx/password目录下)
        auth_basic_user_file /usr/local/nginx/password/admin;
        #请求体最大限制1024m,防止太小时上传大游戏失败。
        client_max_body_size 1024m;
        location / {
            root   html;
            index  index.html index.htm;
        }
        #转发到Emulator模拟器游玩页面
        location /play/ {
            proxy_pass http://localhost:8282/;
        }
        #转发到Emulator模拟器管理页面
        location /manage/ {
            proxy_pass http://localhost:8383/;
        }
    }

.......
}

按我上面这种配置的话,你只需要暴露8181端口,然后可以把以前暴露的8282端口和8383端口给关闭了。这样别人就只能通过8181端口访问你的网站了。

然后我们需要生成密码文件,如果你是按我上面的配置,那么就在/usr/local/nginx/password目录下运行此htpasswd命令生成admin密码文件:

#先运行这个命令,安装httpd-tools,如果你已经安装过跳过此步骤
yum install httpd-tools
#接下来运行下面这两个命令,在对应目录下生成密码文件admin,账号是username,密码是password
cd /usr/local/nginx/password
htpasswd -cb ./admin username password

接下来重新进入nginx安装目录,运行如下命令启动nginx:

./sbin/nginx -c ./conf/nginx.conf

emulatorjs,游戏,docker,linux,服务器,nginx

启动成功后,访问游玩页面与管理页面,

访问地址是  http://服务器ip:8181/play 与 http://服务器ip:8181/manage。

比如http://192.168.10.2:8181/play

emulatorjs,游戏,docker,linux,服务器,nginx

emulatorjs,游戏,docker,linux,服务器,nginx

完成,可以把你的网站介绍给你的好基友一起上班摸鱼了

关于Nginx的更多配置、Docker容器的更多知识,以及Emulator模拟器的更多功能,就等待大家自己探索啦。文章来源地址https://www.toymoban.com/news/detail-804626.html

到了这里,关于基于EmulatorJs的Docker实现Web端游玩模拟器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用ENSP模拟器配置华为防火墙的WEB登录页面 --->> 保姆级教程

    点击此电脑 -- 计算机管理 点击设备管理器中的网络适配器  点击操作中的添加过时硬件  继续点击下一步 点击下一步        点击网络适配器         选择Microsoft中的环回适配器         下一步          OK!环回适配添加完成          网络 --- 属性 --- 更改适配器设

    2024年04月29日
    浏览(53)
  • H3C HCL模拟器配置防火墙WEB的两种方法,非常简单

    第一种通过Managenment口配置   1.搭建工程图 2.配置ip地址 (1) 配置Host_1地址: 打开本地物理机的网络连接,将VirtualBox 网卡地址配置为192.168.0.x x 和防火墙同一网段 。 3.将G1/0/0接口划入安全域,命令如下 [H3C]sysN [H3C]sysname FW1 [FW1]int g 1/0/1 [FW1-GigabitEthernet1/0/1]undo ip ad 192.168.0.1 24

    2024年02月03日
    浏览(40)
  • 网络安全 —— 实验(基于华为eNSP模拟器)

    1. 实验一 —— 两个PC机相连 实验 :利用两虚拟PC连接,进行简单通信 实验命令 ▶ 结构图 结果 2. 实验二 —— 两个PC机通过交换机相连 实验 :利用两虚拟PC通过一个交换机进行连接,进行简单通信 实验命令 ▶ 结构图 结果 3. 实验三 —— 一台交换机连接多台PC 实验 :利用

    2024年02月08日
    浏览(47)
  • 基于QT的CAN数据采集模拟器工具

    CANalyst-II基于QT的二次开发 调试完成后,基于项目应用做了些扩展功能,主要有:CAN数据采集及保存,基于SAEJ1939协议常用的几项数据解析,单帧CAN数据发送,CAN文件发送。功能界面如下: 一、CAN数据采集及保存 1、CAN参数设置 通过“CAN参数设置”按钮进入设置界面: 常用

    2023年04月09日
    浏览(33)
  • 基于appnium+python+夜神模拟器的自动化

    目录 1、安装夜神模拟器 2、定位元素 3、开始编码 首先搭好appnium环境!参考https://www.cnblogs.com/testlearn/p/11419797.html   下载安装夜神模拟器后,在cmd命令输入adb connect 127.0.0.1:62001,显示出设备则表示连接成功 打开安卓目录下,...sdktools目录下面的uiautomatorviewer.bat文件; 打开

    2024年02月12日
    浏览(38)
  • C#实现键盘鼠标模拟器

    下面程序可指定一连串重复动作,按顺序执行   using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Text.RegularExpressions; using System.Windows.Forms; namespace Simulator {     public partial class Form1 : Form     {         [System.Runtime.InteropServices.DllImp

    2024年02月16日
    浏览(49)
  • 人生重开模拟器(Python实现)

    人生重开模拟器是由VickScarlet上传至GitHub的一款简单的文字网页游戏。 玩家点击“立即重开”并设置角色的初始属性后,程序就会随机为玩家生成对应的人生经历。 下面我们实现一个简化版的人生重开模拟器,主要目的在于熟悉Python的语法。 初始界面可以自由发挥,这里博

    2024年02月02日
    浏览(52)
  • 通过模拟器实现APP抓包

    本教程将跳过工具安装部分,请正确食用 😉 我的环境: 操作系统:win11 模拟器版本:雷电安卓模拟器稳定版-安卓7.1(32位) V5.0.46 抓包工具:Wireshark-Version 4.0.1 抓包工具:charles-Version 4.6.3 工具安装地址: 雷电安卓模拟器👈点击跳转官网地址下载 Wireshark👈点击跳转官网地址

    2024年02月02日
    浏览(65)
  • 基于STM32设计的掌上游戏机(运行NES游戏模拟器)详细开发过程

    开发环境: keil5 代码风格: 寄存器风格,没有采用库函数,底层代码全部寄存器方式编写,运行效率高,注释清楚。 MCU型号: STM32F103ZET6 开发板: 正常的一块STM32F103ZET6系统板。 游戏模拟器:   NES游戏模拟器 LCD :   ALIENTEK的3.5寸屏幕。(屏幕型号不重要,随便一款都可以的,把

    2024年02月06日
    浏览(50)
  • 高校数据中心网络规划设计及思科模拟器CISCO模拟实现(网络安全、数据冗余)

            数据中心在现代社会中的地位愈加重要,这得益于信息技术的迅速发展。信息处理的能力、安全性等方面的要求也在不断攀升。因此,在服务器的计算能力、稳定性、可靠性、安全性、未来扩展性以及方便管理等多个方面,都应对其要求更高水平。         高校没有

    2024年02月01日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包