Oyunun ne gibi bir mimarisi olacağını az çok tahmin etmiş olabilirsiniz. Sonuçta satranç 2 kişi ile oynanan bir oyun. Kişilerin kendilerine ait süreleri olabilir, oyunu süresiz açabilir vs. Bizim bu konuda yapmamız gereken oyunun back-end işlerini bitirip bunları işlemek. Node.js tarafında yapılacak çok iş var gibi görünüyor. Çünkü bir API yapılmalı ve kullanıcılar arasında tamamen sorunsuz bir şekilde çalışabilen bir yönetim olmalı. Oyunda kullanıcıların hile yapamaması gerekiyor. Daha fazla kafamızı yormadan oturumu nasıl yöneteceğimize geçelim :)
Öncelikle Node.js dünyasına geçiyorsak request response sistemini kullanacağımızı bilmeliyiz. Yani istek yanıt sistemi. npm üzerinde express adında bir modül var. Bu modül Node.js'in http modülünü kullanarak normalde yapılması gereken iş yükünü kütüphanesi sayesinde düşürüyor. Ben tabi kütüphane fanatiği birisi değilimdir sadece topluluğun genel tercihlerini kullanmayı severim :)
Artık projemizi başlatmanın zamanı geldi. Hemen herhangi bir yere dizin oluşturalım. (NOT: bu adımları yapmanıza gerek yok anlattıktan sonra açıklayacağım)
$ cd ~
$ mkdir satranc
$ cd satranc
Bu dizinde herşeyden önce npm ile package.json oluşturalım
$ npm init --ff
Ardından oluşan package.json dosyasını güncelliyorum
{
"name": "satranc",
"version": "1.0.0",
"description": "Node.js ile satranç yazmak serisinin projesi",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"satranc",
"chess",
"avarekodcu",
"game",
"oyun"
],
"author": "Avare Kodcu <abdurrahmaneker58@gmail.com>"
}
Dosyayı değiştirdiğimize göre bunu npm'e ve GitHub'a atabiliriz. İlk önce satranc ismindeki projemizi npm'e atıyoruz daha önce bu ismi alan olmadığı için benim bunu kullanma hakkım var. npm'e bu şekilde projeyi atıyorum ve 1.0.0 için attık.
$ npm publish
+ satranc@1.0.0
$
Artık burada: https://www.npmjs.com/package/satranc. Habi be, attıktan sonra fark ettim "oyun yazmak" olacak yeri "satranç yazmak" diye yazmışım :D neyse olsun bir sonraki versiyonda düzeltirim.
Şimdi sıra projeyi GitHub'a atmakta. GitHub üzerinde bir repo oluşturdum https://github.com/abdurrahmanekr/satranc şimdi bunu klasörümüze ekleyelim.
$ git init
$ git remote add origin https://github.com/abdurrahmanekr/satranc
$ git add .
$ git commit -m "first commit."
$ git push -u origin master
Bu işlemleri sizin yapmanıza gerek yok. Zaten bunu benim yapmam gerekiyor. Sadece bilgi olsun diye buraya ekliyorum.
Yapmamız gereken ayarlamalardan biri de .gitignore dosyası.
$ touch .gitignore
$ vim .gitignore
/node_modules
/dist
~
~
:wq
$
Sanırsam bu kadardı.
Burada daha çok yapacağımız işi anlatacağım. express modülünün kullanımı hakkında birkaç makale okumak isterseniz:
emrekacan.net/nodejs-adim-9-express-framework/
emrekacan.net/nodejs-adim-10-express-framework-2/
yusufsezer.com.tr/node-js-express-modulu/
İlk önce express modülünü kuralım sonra server
klasörünü oluşturalım.
$ npm install express --save-dev && mkdir server
Sonra server/index.js
dosyasını oluşturalım ve basit olarak 3000 portuna sunalım:
const express = require('express');
// sunucumuzu oluşturalım
const app = express();
// yayınlayacağımız port
const port = 3000;
// sonra da yönlendirmeleri yapalım
app.get('/', (req, res) => {
// kullanıcıya cevap olarak bunu döndürüyoruz
res.send('Merhaba Satranç\'a Hoşgeldin!');
})
// uygulamayı yayınlıyoruz
app.listen(port, () => {
console.log(`Uygulama ${port} portundan sunuluyor`);
})
Bundan sonra yapmamız gereken node ile başlatmak.
$ node server/index.js
localhost:3000/
adresine girdiğimizde bizi "Merhaba Satranç'a Hoşgeldin!" yanıtı karşılayacak.
Buraya kadar herşey tamam. Şimdi oturum kullanımını entegre edelim. express üzerinde oturumlar yönetmek için express-session modülünü kullanacağız. Kurmak için:
$ npm install express-session --save-dev
Şimdi ise bunu, express uygulamamızın içinde kalabalık etmemesi için index.js dosyasında değil server/uses.js
dosyasında kullanalım.
const session = require('express-session');
module.exports = (app) => {
// oturum modeli
app.use(session({
secret: "gizli-anahtar",
resave: false,
saveUninitialized: true,
}));
};
Tabi bu modülü server/index.js
dosyasında da kullanalım.
...
const uses = require('./uses');
// sunucumuzu oluşturalım
const app = express();
// yayınlayacağımız port
const port = 3000;
// uygulamamızın kullanması gereklenleri dahil ediyoruz
uses(app);
// sonra da yönlendirmeleri yapalım
app.get('/', (req, res) => {
// kullanıcıya cevap olarak bunu döndürüyoruz
res.send('Merhaba Satranç\'a Hoşgeldin!');
})
...
Modülümüzü tekrar açtığımızda tarayıcı cookie'si üzerine eklendiğini görebiliyoruz.
Redis bellekte çalışan bir NoSQL veritabanıdır ve gerçekten hızlıdır. Bizim kullanmamızın amacı oturumları sorunsuz bir şekilde yönetmek. Buradan detaylı bilgi edinebilirsiniz.
Redis'i express üzerinde kullanmak için connect-redis kütüphanesini kullanacağız. Bu kütüphaneyi kullanmadan önce bilgisayarınıza redis'i kurmalısınız tabi:
Mac için:
$ brew install redis
(apt-get) Linux için:
$ sudo apt-get install redis-server
Yüklendikten sonra yapılması gereken tek şey:
$ redis-server &
Kuralım:
$ npm install connect-redis --save-dev
$ npm install redis --save-dev
Ardından server/uses.js
dosyamızı şöyle düzenleyelim:
const session = require('express-session');
const redis = require('redis'); // bağlantı açmamız için gerekli bir kütüphane
const RedisStore = require('connect-redis')(session); // connect-redis'e express-session'u bağladık
module.exports = (app) => {
// yeni bir redis istemcisi oluşturduk
const client = redis.createClient();
// oturum modeli
app.use(session({
store: new RedisStore({ // yeni bir redis bağlantısı
client: client,
host: 'localhost',
port: 6379,
ttl : 260
}),
secret: "gizli-anahtar",
resave: false,
saveUninitialized: true,
}));
};
Redisle ilgili anlatacaklarım bu kadardı.
Bu haftaki bölüm bu kadardı bir sondaki bölümde görüşmek üzere :) Sorularınız varsa sormaktan çekinmeyin.
Düşündüklerin nedir ?
Yorumlar ({{totalCommentCount}})
{{commentLike90Count}} beğenme 6 yıl önce
{{commentLike163Count}} beğenme 4 yıl önce