nodejs游戲服務器開發(一)---socket連接


隨着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里,這個我就不共享了,反正方式都差不多,要不然就用開源的第三框架!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM