shell> apt-get install build-essential
shell> npm config set unsafe-perm true
shell> npm install pomelo -g
shell> pomelo --help
shell> pomelo --version
shell> pomelo init ./HelloWorld
shell> cd HelloWorld
shell> sh npm-install.sh
shell> cd game-server
shell> pomelo start
shell> cd web-server
shell> node app
shell> cd game-server
shell> pomelo list
try to connect 127.0.0.1:3005
serverId serverType pid rss(M) heapTotal(M) heapUsed(M) uptime(m)
connector-server-1 connector 2646 38.00 19.87 17.92 15.90
master-server-1 master 2637 27.62 14.95 13.32 15.90
shell> pomelo stop
shell> pomelo kill
HelloWorld/
├── game-server
│ ├── app
│ │ └── servers
│ │ └── connector
│ │ └── handler
│ │ └── entryHandler.js
│ ├── app.js
│ ├── app.js.mqtt
│ ├── app.js.sio
│ ├── app.js.sio.wss
│ ├── app.js.udp
│ ├── app.js.wss
│ ├── config
│ │ ├── adminServer.json
│ │ ├── adminUser.json
│ │ ├── clientProtos.json
│ │ ├── dictionary.json
│ │ ├── log4js.json
│ │ ├── master.json
│ │ ├── serverProtos.json
│ │ └── servers.json
│ ├── logs
│ └── package.json
├── npm-install.bat
├── npm-install.sh
├── shared
│ ├── server.crt
│ └── server.key
└── web-server
├── app.js
├── app.js.https
├── bin
│ ├── component.bat
│ └── component.sh
├── package.json
└── public
├── css
│ └── base.css
├── image
│ ├── logo.png
│ └── sp.png
├── index.html
├── index.html.sio
└── js
└── lib
├── build
│ ├── build.js
│ └── build.js.wss
├── component.json
├── local
│ └── boot
│ ├── component.json
│ └── index.js
├── pomeloclient.js
├── pomeloclient.js.wss
└── socket.io.js
18 directories, 38 files
shell> cd HelloWorld
shell> sh npm-install.sh
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Pomelo</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-scripte-type" content="text/javascript" />
<link type="text/css" rel="stylesheet" href="css/base.css" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<script src="js/lib/build/build.js" type="text/javascript"></script>
<script type="text/javascript">
require('boot');
</script>
<script type="text/javascript">
var pomelo = window.pomelo;
var host = "172.16.7.103";
var port = "3010";
function show() {
pomelo.init({
host: host,
port: port,
log: true
}, function() {
pomelo.request("connector.entryHandler.entry", "hello pomelo", function(data) {
alert(data.msg);
});
});
}
</script>
</head>
<body>
<div class="g-button">
<input id="test" type="button" value="Test Game Server" onclick="show()"/>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>
Pomelo
</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-scripte-type" content="text/javascript" />
<meta name="author" content="netease" />
<meta name="version" content="1.0" />
<meta name="keywords" content="pomelo" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<script src="js/lib/build/build.js" type="text/javascript"></script>
<script type="text/javascript">
require('boot');
</script>
<script type="text/javascript">
var pomelo = window.pomelo;
var host = "172.16.7.103";
// var port = "3010";
var port = "3014";
function show() {
pomelo.init({
host: host,
port: port,
log: true
}, function () {
/*
pomelo.request("connector.entryHandler.entry", "hello pomelo", function(data) {
alert(data.msg);
});
pomelo.request("connector.entryHandler.hello", "hello ", function(data) {
alert(data.msg);
});
*/
pomelo.request("gate.gateHandler.queryEntry", "hello ", function (data) {
alert(data.port);
console.dir(data.msg);
});
});
}
</script>
</head>
<body>
<div class="container">
<p>
</p>
<p>
<button class="btn btn-default" type="submit" onclick="show()">Test Game Server</button>
</p>
</div>
</body>
</html>
connector.entryHandler.entry
→ app/servers/connector/handler/entryHandler.js
Handler.prototype.entry = function(msg, session, next) {
next(null, {code: 200, msg: 'game server is ok.'});
};
Handler.prototype.hello = function(msg, session, next) {
console.log(msg);
console.log(session);
next(null, {code: 200, msg: 'Hello World!'});
};
pomelo.request("connector.entryHandler.hello", "hello pomelo", function(data) {
alert(data.msg);
});
gate.gateHandler.queryEntry
→ app/servers/gate/handler/gateHandler.js
module.exports = function(app) {
return new Handler(app);
};
var Handler = function(app) {
this.app = app;
};
Handler.prototype.queryEntry = function(msg, session, next) {
var connectors = this.app.getServersByType('connector');
var port = connectors[0].clientPort;
var host = connectors[0].host;
var length = connectors.length;
// next(null, {code: 200, msg: connectors});
next(null, { code: 200, host: host, port: port, msg: length });
};
game-server/config/servers.json
{
"development": {
"connector": [
{ "id": "connector-server-1", "host": "172.16.7.103", "port": 3150, "clientPort": 3010, "frontend": true },
{ "id": "connector-server-2", "host": "172.16.7.103", "port": 3151, "clientPort": 3011, "frontend": true },
{ "id": "connector-server-3", "host": "172.16.7.103", "port": 3152, "clientPort": 3012, "frontend": true },
{ "id": "connector-server-4", "host": "172.16.7.103", "port": 3153, "clientPort": 3013, "frontend": true }
],
"gate": [
{ "id": "gate-server-1", "host": "127.0.0.1", "clientPort": 3014, "frontend": true }
]
},
"production": {
"connector": [
{ "id": "connector-server-1", "host": "127.0.0.1", "port": 3150, "clientHost": "172.16.7.103", "clientPort": 3010, "frontend": true }
],
"gate": [
{ "id": "gate-server-1", "host": "127.0.0.1", "clientPort": 3014, "frontend": true }
]
}
}
中國知名入口網站暨遊戲及網路服務供應商
網易
(NetEase
)網易
在中國提供了各種的網路服務,從入口網站、搜尋引擎、網路遊戲、電子郵件、電子商務、部落格到社交平台