Repository navigation
Expand file tree
/
Copy pathserver.js
More file actions
82 lines (68 loc) · 2.53 KB
/
Copy pathserver.js
File metadata and controls
82 lines (68 loc) · 2.53 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
'use strict';
var AV = require('leanengine');
var express,
config,
glob,
app;
express = require('express');
config = require('./config/config');
glob = require('glob');
const request_get = require('./app/helpers/request_get.js');
AV.init({
appId: process.env.LEANCLOUD_APP_ID,
appKey: process.env.LEANCLOUD_APP_KEY,
masterKey: process.env.LEANCLOUD_APP_MASTER_KEY
});
// 如果不希望使用 masterKey 权限,可以将下面一行删除
AV.Cloud.useMasterKey();
// 端口一定要从环境变量 `LEANCLOUD_APP_PORT` 中获取。
// LeanEngine 运行时会分配端口并赋值到该变量。
var PORT = parseInt(process.env.LEANCLOUD_APP_PORT || 3000);
app = express();
var server = require('http').createServer(app);
//WebSocket;
var WebSocketServer = require('websocket').server;
const wsServer = new WebSocketServer({
httpServer: server,
autoAcceptConnections: false,
maxReceivedFrameSize: 64 * 1024 * 1024, // 64MiB
maxReceivedMessageSize: 64 * 1024 * 1024, // 64MiB
});
var clients = []; // list of currently connected clients (users)
global.ws_client = clients;
clients.broadcast = function(message){
for (var i = 0; i < clients.length; i++) {
clients[i].send(message);
}
}
wsServer.on('request', function(request) {
var connection = request.accept('echo-protocol', request.origin);
// accept connection - you should check 'request.origin'
console.log((new Date()) + ' Connection from origin: ' + request.origin + '.');
var ws_time = (new Date()).getTime();
var index = clients.push(connection) - 1;
var userName = "foowalaclient" + ws_time;
connection.on('message', function(message) {
if (message.type === 'utf8') {
console.log((new Date()) + ' Received Message from ' + userName + ': ' + message.utf8Data);
}
});
connection.on('close', function(connection) {
console.log((new Date()) + " Peer " + connection.remoteAddress + " disconnected.");
clients.splice(index, 1);
});
});
// 应用程序加载
require('./config/express')(app, config, wsServer);
server.listen(PORT, function() {
console.log('Node app is running, port:', PORT);
// 注册全局未捕获异常处理器
process.on('uncaughtException', function(err) {
console.error("Caught exception:", err.stack);
});
process.on('unhandledRejection', function(reason, p) {
console.error("Unhandled Rejection at: Promise ", p, " reason: ", reason.stack);
});
});
// 应用程序启动 mongoose
// require('./app/helpers/mongoconn');