实例介绍
【实例截图】
【核心代码】
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小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论