Skip to content

Aerojin/webchat

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#配置 1:下载安装node 2:克隆 webchat 项目 3:安装项目的所有中间件(使用npm install完成) 4:创建配置文件 settings.js module.exports = { db:"127.0.0.1", port:27017 }; 5:访问webchat 127.0.0.1:3000

#第一版本规划 1: 讨论组创建过程和操作

	1:创建讨论组
		1:用户打开webChat首页,点击 "创建" 按钮(弹出或者进入创建页面)
		2:输入讨论主题与副标题,确认即可创建一个讨论组。
		
	2:修改讨论主题
		1:点击主题文字后面的小图标(小图标待定),主题变成可编辑状态,回车完成输入
		
	3:修改讨论副标题
		1:点击主题文字后面的小图标(小图标待定),主题变成可编辑状态,回车完成输入

2:参与讨论过程和操作

	1:进入讨论组
		1:用户在浏览器地址栏键入(粘贴)讨论组URL,可直接进入讨论组。
		
	2:昵称设置规则
		在浏览器端储存用户昵称。
		
		规则
		第一次参与讨论				用户手动输入昵称		
		以后进入						恢复上一次的昵称					
	
3:如何发言
	在讨论组页面输入框输入不为空的文字,回车发送给当前在线所有人。
	
4:讨论中规则
	1:讨论主题与副标题改变,推送时间轴消息
	2:成员离线或上线推送时间轴消息

5:讨论组信息与设置
	1:聊天首页下拉框内,给出本页URL,并提示用户发送URL给朋友,即可加入聊天。(所有用户)
	2:发送当前聊天记录到邮箱,用户输入邮箱地址,点击确认,系统发送当前所有聊天记录给用户。(所有用户)
	3:结束讨论组,点击结束讨论按钮,即关闭讨论组。讨论组处于关闭状态,只可阅读记录,不可发言。(创建者)

6:讨论组权限规则
	1:所有用户能创建讨论组(注册,非注册)
	2:非注册用户创建讨论组,用户如果提供了email,则把本讨论组创建者权限赋予这个EMAIL;
	3:新注册用户(email)注册,识别以往是否通过此email创建过讨论组,有则归于其名下

应用场景
	在线讨论组,基于事件,以事件来汇聚人。当下的社交则是基于人。

	1;周六组织一个活动,邀请参加的朋友一起讨论活动细节。
	2:事件直播,基于某个新闻事件的直播,所有人可以参与。
	3:旅行日记,为自己建立一个旅行日记讨论组,记录下旅行的所见所闻。

#第2版本聊天页面功能规划

统一导航
	首页 ,创建对话,其他对话。        [头像+] 账号

									#点击头像弹出选择头像弹出层
									-- 修改昵称
									-- 我参与过的对话
										匿名用户	--绑定email
									-- 切换用户


表现
	对话主题
	对话副标题
	对话输入框
	最近的对话列表+时间线选择
	在线人列表
	查看历史参与的人(按钮或列表)
	修改对话信息(按钮)

#投票插件

应用场景 : Chat页面
使用权限 : 
	1.所有对话用户
	2.发起人可以删除自己创建的投票项目

使用说明 :
	1.发起投票人(任何人)创建投票项目(投票话题,可选表决项[默认带有放弃此次投票项],参与投票人)
	2.在各个投票项目中被参与投票的人的浏览器弹出参与提示(考虑使用chrome插件形式)
	3.参与人进行投票(在参与还没进行投票之前不可查看投票结果),待其投票结束之后(不可在此进行投票)
	  便可查看投票结果(使用SVG进行数据统计)
	4.待全部投票完成之后,数据按照没投票已投票进行统计显示
	5.投票项目依附该话题列表式显示在相应的地方

#定义数据体

####用户定义 User

{
	"_id":"514197562128205e66000011",
	"mail":"[email protected]",// 匿名用户的email为一串数字
	"name":"lujun",
	"hexMail":"", // 用户email md5值,也作为头像的网址使用
	"avatar":"http://www.gravatar.com/avatar/d437481aad048f1cb9ff68483c662bae.jpg?s=48&d=monsterid"
}

####房间定义 Room

{
	"id":"1361182575505",//可作为 vchat/id 直接访问房间
	"name":"vchat",//可作为 vchat/name 直接访问房间
	"topic":"vchat开发测试",
	"des":"主题说明文字",
	"masterId":"514197562128205e66000011",//创建者 _id
	"masterName":"lujun", //创建者用户名
}

####对话定义 Chat

{
	_id:"51419a0c2128205e66000024", //数据库唯一 _id
	roomdid: "1361182575505",  //房间 _id
	uid: "514197562128205e66000011", //用户 _id
	uname: "lujun", //用户昵称
	uavatar: "http://www.gravatar.com/avatar/d437481aad048f1cb9ff68483c662bae.jpg?s=48&d=monsterid",
			 // 用户头像地址  遵循 gravatar 网站头像规则
	time: 1363252238, //时间戳/1000
	to:(null || Chat) //如果是回应某个对话有此项目
}

####定义接口返回值 return

{
	/**
		code:"msg"
		"0":"正确执行",
		"-1":"参数错误",	
		"-2":"信息重复",
		"500":"服务器错误",
		"600":"数据库错误",
		"601":"数据库错误",
		"403":"Client Access Licenses exceeded(超出客户访问许可证)",
		"404":"not defined",
	*/
	code:0, //代码执行状态  非 0 状态表示非正确执行
	msg: "", //除以上常用状态码文字,其他状态会有更具体说明
	/**
		当 code == 0  result值 可用
		数组 [1,2,3,4,...], 空 -> []
		对象 {a:,b:,c} , 空 -> null
		无返回值 null
	*/
	result: //返回数据
}

#api 文档 仅ajax

####发送一条信息

url: "/sys/post"
method: post
param:
	roomid:number // 房间id
	text:string < 2000
	[to]:string //回应某条信息的 _id
return:{
	code:0,
	msg:"正确",
	result:Chat
}

####修改昵称

url: "/sys/set_user_name"
method: post
param:
	name: string < 50
return :{
	code:0, //(0, -1),
	msg:"" //(正确,参数错误),
	result:null
}

####匿名用户绑定email

url: "/sys/bindmail"
method: post
param:
	mail: string //合法的email地址
	pwd: string > 5
return :{
	code:0, //(0, -1, 403),
	msg:"" //(正确, 参数错误, 超出访问权限(已经绑定过了)),
	result:null
}

##修改房间信息,仅房间创建者可修改

url: "/sys/update_room"
method:post
param:
	name: string < 50
	topic: string < 500,
	des: string < 2000
return:{
	code:0, //(0, -1, 403),
	msg:"", //(正确, 参数错误, 超出访问权限(没有权限修改)),
	result:null
}

####根据时间获取房间对话

url: "/sys/getmore"
method:get
param:
	roomid:"1361182575505" //房间id
	/**
		小于此时间错的最近 size 条信息
		可以使用未来时间戳获取最新的10条
	*/
	time:"时间戳"/1000 
	[size]:10 //默认10条
return:{
	code:0,
	msg:"正确执行",
	result:[Chat,Chat,Chat,.......]
}

####获取我参与过的对话

url: "/sys/ichats"
method : get
param:null
return:{
	code:0, //(0, -1),
	msg:"正确"  //("正确","参数错误"),
	result:{
		into:[room, room, ....] //我参与过的对话倒序
		create:[room, room, ....] //我创建的对话倒序
	}
}

####检查用户名是否被注册

url:"/sys/checkmail",
method:get
param:
	mail: //一个正确的email
return:{
	code:"0" //0, -2
	msg:"正确"//未注册,已经注册
	result:null
}

About

web chat

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.7%
  • Shell 0.3%