1028.us

管理ページへ

ログアウト

Webサーバーを作成する

// httpモジュールを読み込む
const http = require('http')
 
// Webサーバーを実行
const svr = http.createServer(handler)
 
// ポート8080番で待ち受け開始
svr.listen(8080)
 
// サーバーにアクセスがあった時の処理
// req:リクエスト
// res:レスポンス
function handler (aa, res) {
  console.log('url:', aa.url)
  console.log('method:', aa.method)
  
  // HTTPヘッダを出力
  res.writeHead(200, {'Content-Type': 'text/html'})
  
  // テキスト出力
  res.write('<h1>Hello, World!</h1>\n')
  
  // 処理の終了時(必ず必要)
  res.end('<p>END</p>\n')
}

URLに応じて切り替え

const http = require('http')
const ctype = { 'Content-Type': 'text/html;charset=utf-8' }


const svr = http.createServer(handler) 
svr.listen(8080) 

function handler (req, res) {
  // URLを取得
  const url = req.url
  // トップページか?
  if (url === '/' || url === '/index.html') {
    showIndexPage(req, res)
    return
  }
  // サイコロページか?
  if (url.substr(0, 6) === '/dice/') {
    showDicePage(req, res)
    return
  }
  // その他
  res.writeHead(404, ctype)
  res.end('404 not found')
}

// インデックスページ
function showIndexPage (req, res) {
  // HTTPヘッダを出力
  res.writeHead(200, ctype)
  // レスポンスの本体を出力
  const html = '<h1>サイコロページの案内</h1>\n' +
    '<p><a href="/dice/6">6面体サイコロ</a></p>' +
    '<p><a href="/dice/12">12面体サイコロ</a></p>'
  res.end(html)
}

// サイコロページ
function showDicePage (req, res) {
  // HTTPヘッダを出力
  res.writeHead(200, ctype)
  // 何面体のサイコロが必要?
  const a = req.url.split('/')
  const num = parseInt(a[2])
  // 乱数を生成
  const rnd = Math.floor(Math.random() * num) + 1
  // レスポンスの本体を出力
  res.end('<p style="font-size:72px;">' + rnd + '</p>')
}

List of Category