forked from shihuaping/gamex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient-handler.js
50 lines (38 loc) · 1.09 KB
/
client-handler.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//
//
// 客户端请求进来时的处理
//
//
const logger = require('./logger');
const connections = require('./connections');
const cmdDefine = require('../protocol/cmd-define');
function onConnection(fd,ws) {
logger.info("client connected,fd:%d,ip:%s", fd, ws.ip);
connections.addClientConn(fd,ws);
}
function onMessage(ws,msg) {
logger.info("client read data,fd:%d,ip:%s", ws.psudoID, ws.ip);
connections.updateClient(ws);
var jObj = JSON.parse(msg);
var mainCmd = jObj.head.mcmd;
var subCmd = jObj.head.scmd;
switch (mainCmd) {
case cmdDefine.HEART_BEAT:
ws.send(msg);
break;
case cmdDefine.LOGIN:
default:
logger.error("client fd:%d send unkown cmd:%d", ws.psudoID, mainCmd);
}
}
function onError(ws,err) {
logger.error("client error,fd:%d,ip:%s", fd, ws.ip);
logger.error(err);
const fd = ws.psudoID;
connections.removeClientConn(fd);
}
function onClose(ws) {
logger.info("client close,fd:%d,ip:%s", fd, ws.ip);
const fd = ws.psudoID;
connections.removeClientConn(fd);
}