nodejs+express+truffle 写一个区块链博彩Dapp(2搭建Http服务)

搭建Http服务
1.在guessBox文件夹根目录新建一个app.js文件作为项目的启动文件,编辑app.js文件内容:
//说好的支持markdown语法呢?!!!太不专业了,不写了!
const express = require('express');
const routes = require('./routes');
const http = require('http');
const https = require('https');
const path = require('path');
const config = require('./truffle-config');
const cors = require('cors');
const fs = require('fs');
const net = require('net');
const app = express();
app.use(cors()); //解决跨域
const httpPort = 80;
const httpsPort = 443;
app.set('port', httpPort);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use('/staticApi', express.static('api'));
app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.bodyParser({ uploadDir: __dirname + "/public/userUpload/", keepExtensions: true, limit: 3000000000 })); /* * 加入会话机制 */
app.use(express.cookieParser()); //cookie解析中间件
app.use(express.session({ secret: config.cookieSecret, key: config.name, cookie: { maxAge: 1000 * 60 * 60 * 24 }}));
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
if ('development' == app.get('env')) { app.use(express.errorHandler()); }
http.createServer(app).listen(httpPort, function() { console.log('GuessBox HTTP Server listening on port ' + httpPort); });
routes(app);

2.接下来,首先我们来理一下思路:让我们想想博彩Dapp是不是得先有一个账户来投注啊?传统的APP是不是需要用手机号邮箱之类的来注册一个账号?但是在区块链上,一个账户就是一个0x开头的地址,所以常规的思路是我们使用手机号注册后,再绑定一个区块链地址。在这里由于是测试用的Demo,我们不用新建账户然后绑定了,直接获取以太坊测试客户端的账户(ganache客户端会默认生成10个账户)来进行后续操作。所以我们需要先编写一个登录页面,获取到这10个账户,再让用户选择其中之一。

但是获取以太坊测试客户端的账户就需要与以太坊进行交互了,就需要用web3来交互,这里先暂时不与以太坊交互,虚拟10个假的账户来先把http服务器搭建起来。我们接着来操作:

在项目根目录下新建一个controllers文件夹作为主要代码文件夹,然后在文件夹下面新增一个match.js文件作为博彩赛事的主要逻辑代码,编辑如下:

//登录页面

exports.loginPage = function(req, res) {

var accounts = req.session.accounts;

if (!accounts) { accounts = ['00','01','02','03','04','05','06','07','08','09'] return; }

res.render('m/login', { title: 'Login | Guess Box', accounts: accounts });

}

这段代码用的是ejs模板引擎,直接虚拟了10个假账户,然后将账户赋值到accounts对象,再传到login.ejs这个页面里了。

3.接下来就是创建登录页面。在项目根目录下新建一个views文件夹,然后再在views下创建一个m文件夹,说明这个文件夹是专门放手机版页面的地方(难保以后我们不开发管理web端)。在m文件夹下新建header.ejs文件,作为通用的头部模板代码。编辑内容:

//不知道为什么复制不了HTML头部代码。奇怪。以后再修改把

然后再在m文件夹下新建login.ejs文件并编辑内容(<%- include header %>就是引用通用的头部模板代码):

<%- include header %>

4.在项目根目录下新建一个routes文件夹,进入该文件夹后,新增一个index.js文件作为路由,并编辑index.js的内容:

你可能感兴趣的:(nodejs+express+truffle 写一个区块链博彩Dapp(2搭建Http服务))