-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
134 lines (104 loc) · 3.42 KB
/
server.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
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// Include Server Dependencies
var express = require("express");
var bodyParser = require("body-parser");
var logger = require("morgan");
var mongoose = require("mongoose");
var fs = require('fs'); // required for file serving
var expressValidator = require('express-validator');
var session = require('express-session');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
// Mongoose mpromise deprecated - use bluebird promises
var Promise = require("bluebird");
var methodOverride= require('method-override');
mongoose.Promise = Promise;
// // Require Click schema
// var Address = require("./models/Address");
// Create a new express app
var app = express();
// Sets an initial port. We'll use this later in our listener
var PORT = process.env.PORT || 3000;
// SOCKET IO
var http = require('http').Server(app);
var io = require('socket.io')(http);
var usernames ={};
io.on('connection', function(socket){
console.log('socket user connected');
socket.on('user joined', function(data){
console.log('join room', data.username);
socket.username = data.username;
//usernames[username]= socket;
socket.join(data.username);
});
socket.on('disconnect', function(){
console.log('user disconnected');
//elete usernames[socket.username];
});
socket.on('chat message', function(msg){
//console.log('message: ' + msg);
io.emit('get message', msg);
});
socket.on('typing', function(username){
//console.log("username is typing", username);
socket.broadcast.emit('typing', username);
});
socket.on('private', function(data){
socket.join(data.from);
console.log('sending private', data);
io.sockets.in(data.to).emit('p message',data);
});
});
// Run Morgan for Logging
app.use(logger("dev"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.text());
app.use(bodyParser.json({ type: "application/vnd.api+json" }));
app.use(express.static("public"));
app.use(methodOverride("_method"));
// -------------------------------------------------
// MongoDB configuration (Change this URL to your own DB)
//mongoose.connect("mongodb://artofmarco@gmail.com:Italiano1@ds157342.mlab.com:57342/heroku_sb3hh2c2");
//mongoose.connect("mongodb://localhost/uniconn2");
mongoURI = 'localhost/uniconn2';
MONGOLAB_URI = "mongodb://heroku_sb3hh2c2:dua059evi70hscv8h11eje5mpt@ds157342.mlab.com:57342/heroku_sb3hh2c2"
mongoose.connect(MONGOLAB_URI);
var db = mongoose.connection;
db.on("error", function(err) {
console.log("Mongoose Error: ", err);
});
db.once("open", function() {
console.log("Mongoose connection successful.");
});
// Express Session
app.use(session({
secret: 'secret',
saveUninitialized: true,
resave: true
}));
// Passport init
app.use(passport.initialize());
app.use(passport.session());
// Express Validator
app.use(expressValidator({
errorFormatter: function(param, msg, value) {
var namespace = param.split('.')
, root = namespace.shift()
, formParam = root;
while(namespace.length) {
formParam += '[' + namespace.shift() + ']';
}
return {
param : formParam,
msg : msg,
value : value
};
}
}));
var routes = require('./controllers/routes.js');
// -------------------------------------------------
app.use(routes);
// Starting our express server
http.listen(PORT, function() {
console.log("App listening on PORT: " + PORT);
});