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