代码拉取完成,页面将自动刷新
同步操作将从 zengmumu/0806project 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/* 导入工具包 */
// 导入express 并创建了express实例app
var app = require('express')();
// 导入express
var express = require('express');
// 导入内置http服务,使用app实例
var http = require('http').Server(app);
// 到scoket.io 启动scoket服务器
var io = require('socket.io')(http);
/* 启动web服务器,定义静态文件夹*/
// 访问/ 返回一段html文本
app.get('/', function(req, res){
res.send('<h1>你好http</h1>');
});
// 使用静态目录public
app.use(express.static('public'))
// 定义所有的在线用户集合
var onlineUsers = {};
// 所有的在线用户数量
var onlineCount = 0;
/* 处理聊天信息 */
io.on('connection', function(socket){
console.log('a user connected');
// 当监听到用户的登录事件时候
socket.on('login', function(obj){
//动态scoket.name 为传入事件参数obj 的userid
socket.name = obj.userid;
// 如果当前用户不在 用户列表列表
if(!onlineUsers.hasOwnProperty(obj.userid)) {
// 添加当前用户到用户列表
onlineUsers[obj.userid] = obj.username;
// 数量加1
onlineCount++;
}
// 发送一个登录事件,事件值为一个对象包含用户列表,和在新人数,当前用户
io.emit('login', {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});
console.log(obj.username+'加入了聊天室');
});
// 当监听用户断开连接
socket.on('disconnect', function(){
// 如果有这个用户
if(onlineUsers.hasOwnProperty(socket.name)) {
var obj = {userid:socket.name, username:onlineUsers[socket.name]};
// 移除用户列表
delete onlineUsers[socket.name];
// 用户总数量减一
onlineCount--;
// 发送注销事件
io.emit('logout', {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});
console.log(obj.username+'退出了聊天室');
}
});
// 当监听用户发送message事件
socket.on('message', function(obj){
// 向所有用户发送message事件
io.emit('message', obj);
console.log(obj.username+'说:'+obj.content);
});
});
/* 启动服务器 默认是5050端口 */
http.listen(process.env.PORT || 5050, function(){
console.log('listening on *:5050');
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。