隨着nodejs的火熱,計算機的發展,使得游戲服務器也開始轉向解釋語言了,而有些人喜歡用c++/Lua開發服務器,我也曾如此做過。后來,隨着網易開源的pomole游戲服務器框架,go語言的出現,nodejs已經開始在游戲服務器端火起來了!少說無聊的。
由於我是在外面已經購買有一台服務器,所以我的環境是直接布署到上面的!具體怎么布置,我就不多說了,我朋友的博客里有,包括pomole的都有。
游戲服務器,都是建立在socket的,要不然就是類似於socket的協議上。而nodejs自身就支持3種連接方式
socket
http
socket.io
而我們游戲要用的就以兩種為主。
我就只以tcp socket來說明吧,因為我也不打算做網頁游戲,所以就不在那方面多說了!
正式代碼:
var net = require('net');
var HOST = 'your ip';
var PORT = your port;
// 創建一個TCP服務器實例,調用listen函數開始監聽指定端口
// 傳入net.createServer()的回調函數將作為”connection“事件的處理函數
// 在每一個“connection”事件中,該回調函數接收到的socket對象是唯一的
net.createServer(function(sock) {
// 我們獲得一個連接 - 該連接自動關聯一個socket對象
console.log('CONNECTED: ' +
sock.remoteAddress + ':' + sock.remotePort);
// 為這個socket實例添加一個"data"事件處理函數
sock.on('data', function(data) {
console.log('DATA ' + sock.remoteAddress + ': ' + data);
var Message = require('./Message');
var msg = new Message(data);
msg.parseMessage();
// 回發該數據,客戶端將收到來自服務端的數據
sock.write('Server said "' + data + '"');
});
// 為這個socket實例添加一個"close"事件處理函數
sock.on('close', function(data) {
console.log('CLOSED: ' +
sock.remoteAddress + ' ' + sock.remotePort);
});
}).listen(PORT, HOST);
console.log('Server listening on ' + HOST +':'+ PORT);
這個是從我服務器上拿下來的一小塊代碼,里面實現了socket的連接,至於如何解釋,全是message.js里,這個我就不共享了,反正方式都差不多,要不然就用開源的第三框架!