实例介绍
【实例截图】
【核心代码】
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var http = require('http').Server(express);
var io = require('socket.io')(http);
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.engine('ejs', require('ejs-mate'));
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
global.userList={};
io.on('connection',function (socket) {
console.log('监听用户');
socket.on('login',function (obj) {
socket.name = obj.id;
if (!global.userList.hasOwnProperty(obj.id)) {
global.userList[obj.id] = {username: obj.username,id:obj.id};
}
io.emit('loginUser', {username: global.userList});
console.log(userList);
console.log(obj.username '加入了聊天室!');
});
//发布审核
socket.on('checkmessage', function (obj) {
console.log("fuck");
if (obj.level == "66") {
io.emit('message', obj);
}
else {
io.emit('check_message', obj);
}
});
//监听用户发布聊天内容
socket.on('message', function (obj) {
io.emit('message', obj);
console.log(obj.username '说:' obj.content);
});
//监听用户退出
socket.on('disconnect', function () {
//将退出的用户从在线列表中删除
if (userList.hasOwnProperty(socket.name)) {
//退出用户的信息
var obj = {userid: socket.name, username: userList[socket.name].username};
//删除
delete userList[socket.name];
//向所有客户端广播用户退出
io.emit('logout', {userList: userList, user: obj});
console.log(obj.id '退出了聊天室');
}
});
socket.on('updatename',function (obj) {
if (global.userList.hasOwnProperty(obj.id)) {
var id=obj.id;
console.log();
delete userList[obj.id];
global.userList[obj.username] = {username: obj.username,id:id};
io.emit('loginUser', {username: global.userList});
console.log(obj.id "发布删除监听--------------------》");
}
console.log(userList);
});
});
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
http.listen(8687,function () {
console.log("runnning server in 8687");
});
module.exports = app;
标签: 聊天
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论