求霹雳城全集1984国语版百度云 收费的不要找我

腾讯推出陌生人聊天工具人海 随机匿名交流(图)
腾讯推出陌生人聊天工具&人海& (TechWeb配图)
【TechWeb消息】7月11日消息,腾讯近日推出了一款陌生人聊天应用&人海&(),为用户提供陌生人之间的交流服务。
人海的口号是&和陌生人畅所欲言&,用户可以&找朋友、讲笑话、说秘密、谈心事&。登录人海页面时,会自动检测QQ号登录,系统随机寻找到一位陌生人,连接成功后可进行聊天,双方皆处于匿名状态。
如果对方30秒未发言,系统会提示&换人&,或者双方交流不愉快,也可进行&换人&。聊天结束后,还可以对对方进行印象评价。
据悉,最早的陌生人聊天模式是Omegle。Omegle是美国一个名叫Leif
K-Brooks的小伙子开发的一款针对陌生人交流的Web产品,提供速配匿名聊天服务。Omegle于日正式上线很,很快达到同时在线3000人,每天十几万流量。
目前,人海同时在线人数在300人左右,历史最高同时在线人数637人。腾讯人海应用基于QQ,QQ拥有6.7亿用户,同时在线用户数在去年3月份就突破了1亿,人海存在较大的发展空间。
此前,在匿名服务方面,腾讯推出了基于QQ邮箱的漂流瓶服务,拓展人际关系链。(可心)
官方微博/微信
每日头条、业界资讯、热点资讯、八卦爆料,全天跟踪微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb官方微博期待您的关注。
↑扫描二维码
想在手机上看科技资讯和科技八卦吗?想第一时间看独家爆料和深度报道吗?请关注TechWeb官方微信公众帐号:1.用手机扫左侧二维码;2.在添加朋友里,搜索关注TechWeb。
相关的资讯有:
相关的博文有:
根据多方消息,苹果今年iPhone有三款产品,其中包括iPhone 7s和7s Plus的常规升级,以...
本周五,小米6将正式开卖,相信很多用户都会首发有疑问。今天,小米商城就回应了相关...
三星S8手机才刚刚发布不久,国内甚至还没有发售,就在这时韩国媒体惊人曝光了三星S9手...
北京时间4月24日晚间消息,苹果公司(以下简称“苹果”)日前在最新的《环境责任报告...
知乎Live宣布全面升级,主要改进有四大方面,包括提供七天无理由退款,给予流量补贴,...
北京时间4月25日消息,优步手上又有一个诉讼。这次是关于优步一个号称“地狱”的程序...
又是每周几乎一更的节奏,苹果今天又为我们带来了其各个操作系统的最新测试版-第 4 个...
微软又为Windows 7、8.1送上了大礼,就看大家领不领情了。让人意外的是,现在微软居然...
昨日,面向全国所有优秀设计师的“搜狗输入法开放平台”正式上线。原创设计师在该开放...
阴阳师夜叉新皮肤血月青空即将推出,下面就为大家带来皮肤展示和获取方法。......
火影忍者手游5月决斗场奖励回归,新增百机蝎忍者,在昨天的更新文件中有大神拆包看到......
目前新版狄仁杰即将上线体验服,欢迎召唤师们来体验哟!下面就为大家带来新版狄仁杰改......
夜雾迷城活动2月22日5:00—2月28日23:59,本次活动新增套装黎明之冠新月之吻,下面为......
Copyright (C)
All rights reserved.
请选择一张图片分享
要转发到新浪微博,请
要转发到QQ空间,请欢迎大家对侵犯版权等不合法和不健康的内容进行监督和举报。
内容来自互联网,如牵涉版权,请及时联系本站删除,邮箱:项目综合(14)
提示: 因为工程稍微有点大对我个人来说,所以可能在某些方面讲的不清楚或逻辑性不够强,如果有问题请及时@我。
(4)已经说了怎么构造一条消息。这篇要说的就是处理各种业务逻辑的具体。
package com.imomo_
import java.io.FileOutputS
import java.nio.channels.FileC
import java.util.D
import org.apache.mina.core.service.IoHandlerA
import org.apache.mina.core.session.IdleS
import org.apache.mina.core.session.IoS
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONO
import com.imomo_msg.MsgK
import com.imomo_msg.iMoMoM
import com.imomo_msg.iMoMoMsgT
import com.managers.ManageClientS
import com.managers.ManageIdS
import com.managers.ManageLocM
public class iMomoServerHandler extends IoHandlerAdapter {
private IoS
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
super.exceptionCaught(session, cause);
// cause.printStackTrace();
public void inputClosed(IoSession session) throws Exception {
super.inputClosed(session);
public void messageReceived(IoSession session, Object message)
throws Exception {
super.messageReceived(session, message);
this.session =
iMoMoMsg moMoMsg = (iMoMoMsg)
JSONObject msgJson = JSON.parseObject(moMoMsg.msgJson);
System.out.println(“接收到消息”);
// ManageClientSession.addSession(“9091”, session);
System.out.println(“服务器接收:” + moMoMsg.toString());
if (moMoMsg.symbol == ‘+’) {
switch (msgJson.getInteger(MsgKeys.msgType)) {
case iMoMoMsgTypes.FIND_PASSWD:
// 找回密码:
ServerUtils.getInstance().handleFindPasswd(session, moMoMsg);
// ----------------修改个人信息--------------------------------//
case iMoMoMsgTypes.RESET_PASSWD:
// 重置密码:
ServerUtils.getInstance().handleResetPasswd(session, moMoMsg);
case iMoMoMsgTypes.RESET_USERNAME:
// 修改用户名:
ServerUtils.getInstance().handleResetUserInfo(moMoMsg);
case iMoMoMsgTypes.RESET_SEX:
// 修改性别:
ServerUtils.getInstance().handleResetUserInfo(moMoMsg);
case iMoMoMsgTypes.RESET_BIRTHDAY:
// 修改生日:
ServerUtils.getInstance().handleResetUserInfo(moMoMsg);
case iMoMoMsgTypes.RESET_SIGNATUE:
// 修改个人签名:
ServerUtils.getInstance().handleResetUserInfo(moMoMsg);
// ----------------修改个人信息--------------------------------//
// ------------------登录---------------------------//
case iMoMoMsgTypes.LOGIN:
// 用户登录:
ServerUtils.getInstance().handleLogin(session, moMoMsg);
case iMoMoMsgTypes.LOGIN_SUPER_HEAD:
// 用户超级登录有头像:
ServerUtils.getInstance().handleLoginSuper(session, moMoMsg);
case iMoMoMsgTypes.LOGIN_SUPER_NOHEAD:
// 用户超级登录无头像:
ServerUtils.getInstance().handleLoginSuper(session, moMoMsg);
// ------------------登录---------------------------//
case iMoMoMsgTypes.CHATING_TEXT_MSG:
// 文本信息:
ServerUtils.getInstance().handleChatMsg(moMoMsg);
// ------------------位置相关服务-----------------------//
case iMoMoMsgTypes.LOCATION:
// 用户地理位置消息
ServerUtils.getInstance().handleLocation(moMoMsg);
case iMoMoMsgTypes.GET_STRANGERS_LOC_ONEKM:
// 请求得到周围一公里陌生人位置
ServerUtils.getInstance().handleGetStrangersLoc(moMoMsg);
case iMoMoMsgTypes.GET_STRANGERS_LOC_MORE:
// 请求得到周围大于一公里内陌生人位置
ServerUtils.getInstance().handleGetStrangersLoc(moMoMsg);
case iMoMoMsgTypes.GET_STRANGER_INFO:
// 请求得到周围大于一公里内陌生人位置
ServerUtils.getInstance().handleGetFriendInfo(session, moMoMsg);
// ------------------位置相关服务-----------------------//
case iMoMoMsgTypes.GETA_FRIEND_INFO_HEAD:
// 请求得到一个陌生人的具体信息,不用发头像
ServerUtils.getInstance().handleGetFriendInfo(session, moMoMsg);
case iMoMoMsgTypes.GETA_FRIEND_INFO_NOHEAD:
// 请求得到一个陌生人的具体信息,要发头像
ServerUtils.getInstance().handleGetFriendInfo(session, moMoMsg);
case iMoMoMsgTypes.ADD_FRIEND:
// 添加好友
ServerUtils.getInstance().handleAddFriend(session, moMoMsg);
case iMoMoMsgTypes.DELETE_FRIEND:
// 删除好友
ServerUtils.getInstance().handleDeleteFriend(session, moMoMsg);
case iMoMoMsgTypes.GET_FRIEND_ID_LIST:
// 获得好友Id列表
ServerUtils.getInstance().handleGetFriendIdList(session, moMoMsg);
case iMoMoMsgTypes.REBACK:
// 用户反馈
ServerUtils.getInstance().handleReback(moMoMsg);
case iMoMoMsgTypes.SIGN:
// 用户签到
ServerUtils.getInstance().handleVitality(moMoMsg);
case iMoMoMsgTypes.PASS_GAME:
// 用户签到
ServerUtils.getInstance().handleVitality(moMoMsg);
case iMoMoMsgTypes.AGREEE_TO_GROUP:
ServerUtils.getInstance().handleRecieveToGroup(moMoMsg);
} else if (moMoMsg.symbol == '-') {
switch (msgJson.getInteger(MsgKeys.msgType)) {
case iMoMoMsgTypes.REGISTER:
ServerUtils.getInstance().handleRegister(session, moMoMsg);
case iMoMoMsgTypes.RESET_HEAD:
// 修改头像:
ServerUtils.getInstance().handleResetHead(session, moMoMsg);
case iMoMoMsgTypes.CHATING_IMAGE_MSG:
// 图片消息:
ServerUtils.getInstance().handleChatMsg(moMoMsg);
case iMoMoMsgTypes.CHATING_VOICE_MSG:
// 语音消息:
ServerUtils.getInstance().handleChatMsg(moMoMsg);
case iMoMoMsgTypes.CREATE_GROUP:
ServerUtils.getInstance().handleCreateGroup(session, moMoMsg);
public void messageSent(IoSession session, Object message) throws Exception {
super.messageSent(session, message);
public void sessionClosed(IoSession session) throws Exception {
super.sessionClosed(session);
long sessionId = session.getId();
if (ManageIdSessions.isContainsId(sessionId)) {
// 说明是长连接的Id,需要及时删除保存的会话
String userId = ManageIdSessions.getUserId(sessionId);
ManageIdSessions.deleteUserId(sessionId);
ManageClientSession.deleteSession(userId);
// 删除位置
ManageLocMap.deleteOneUser(userId);
System.out.println(“关闭” + session);
public void sessionCreated(IoSession session) throws Exception {
super.sessionCreated(session);
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
super.sessionIdle(session, status);
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
System.out.println(“连接+” + session);
这里可以得到各种不同的消息,然后要进行相应的处理。这里先贴上处理的代码。
package com.imomo_
import java.io.BufferedW
import java.io.FileOutputS
import java.io.OutputStreamW
import java.text.SimpleDateF
import java.util.D
import java.util.L
import java.util.M
import javax.swing.text.MaskF
import org.apache.mina.core.session.IoS
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONA
import com.alibaba.fastjson.JSONO
import com.database.SqlM
import com.imomo_msg.MsgDb;
import com.imomo_msg.MsgK
import com.imomo_msg.MsgTranceU
import com.imomo_msg.StrangerB
import com.imomo_msg.iMoMoM
import com.imomo_msg.iMoMoMsgT
import com.imomo_msg.myLocationB
import com.managers.GroupI
import com.managers.ManageAProvinceL
import com.managers.ManageClientS
import com.managers.ManageG
import com.managers.ManageIdS
import com.managers.ManageLocM
import com.server_utils.FileT
import com.server_utils.PasswordU
import com.server_utils.StaticV
import com.server_utils.SendEmailToC
* 服务器辅助类
* @author Administrator
public class ServerUtils {
static ServerUtils serverU
public static ServerUtils getInstance() {
// if (serverUtils == null) {
// serverUtils = new ServerUtils();
return new ServerUtils();
* 处理注册
* @param session
* @param moMsg
public void handleRegister(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
SqlModel model = new SqlModel();
String userEmail = json.getString(MsgKeys.userEmail);
String userId = model.allocateId();// 分配Id
String userHeadPath = StaticValues.HEAD_P_PATH + userId + ".png";
FileTools.getInstance().saveMultyFile(userHeadPath, moMoMsg.msgBytes);
String sql = "insert into imomo_clients values (?,?,?,?,?,?,?,?,?)";
String[] paras = { userId, userEmail, json.getString(MsgKeys.userName),
json.getString(MsgKeys.userPasswd), userHeadPath,
json.getString(MsgKeys.userSex),
json.getString(MsgKeys.userBirthday), "" , 0+""};
iMoMoMsg Notify = new iMoMoMsg();
Notify.symbol = '+';
JSONObject NotifyJson = new JSONObject();
if (model.updateDb(sql, paras)) {
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.REGISTER_SUCCESS);
System.out.println("注册成功");
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.REGISTER_FAILED);// 注册失败
Notify.msgJson = NotifyJson.toJSONString();
session.write(Notify);
* 处理找回密码
* @param session
* @param moMoMsg
public void handleFindPasswd(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userEmail = json.getString(MsgKeys.userEmail);// 邮箱地址
SqlModel model = new SqlModel();
String userName = model.getUserName(userEmail, true);
iMoMoMsg Notify = new iMoMoMsg();
Notify.symbol = '+';
JSONObject NotifyJson = new JSONObject();
String newPwd = PasswordUtil.getInstance().createNewPwd();
System.out.println(“newPwd = ” + newPwd);
System.out.println(“newPwd - MD5 = ”
+ PasswordUtil.getInstance().toMD5(newPwd));
if (!userName.equals(“null”)) {
String sql = “update imomo_clients set userPasswd = ? where userEmail = ?”;
String[] paras = { PasswordUtil.getInstance().toMD5(newPwd),
userEmail };
if (model.updateDb(sql, paras)) {
// 发送邮件…
new SendEmailToClient(userEmail, “找回密码”, “尊敬的” + userName
您好,系统为您随机生成的密码是:” + newPwd + “,登录后请尽快修改密码!”);
NotifyJson.put(MsgKeys.msgType,
iMoMoMsgTypes.FIND_PASSWD_SUCCESS);
NotifyJson.put(MsgKeys.msgType,
iMoMoMsgTypes.FIND_PASSWD_FAILED);
System.out.println(“没有该用户”);
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.FIND_PASSWD_FAILED);
Notify.msgJson = NotifyJson.toJSONString();
session.write(Notify);
* 处理重置密码
* @param session
* @param moMoMsg
public void handleResetPasswd(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userId = json.getString(MsgKeys.userId);
SqlModel model = new SqlModel();
String sql = "update imomo_clients set userPasswd = ? where userId = ?";
String[] paras = { json.getString(MsgKeys.userPasswd), userId };
iMoMoMsg Notify = new iMoMoMsg();
Notify.symbol = '+';
JSONObject NotifyJson = new JSONObject();
if (model.updateDb(sql, paras)) {
System.out.println("修改密码成功");
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.RESET_PASSWD_SUCCESS);
System.out.println("修改密码失败");
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.RESET_PASSWD_FAILED);
Notify.msgJson = NotifyJson.toJSONString();
session.write(Notify);
* 处理修改用户名
* @param moMoMsg
public void handleResetUserInfo(iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userId = json.getString(MsgKeys.userId);
int type = json.getIntValue(MsgKeys.msgType);
SqlModel model = new SqlModel();
String sql = "";
String[] paras = new String[2];
switch (type) {
case iMoMoMsgTypes.RESET_USERNAME:
sql = "update imomo_clients set userName = ? where userId = ?";
paras[0] = json.getString(MsgKeys.userName);
case iMoMoMsgTypes.RESET_SEX:
sql = "update imomo_clients set userSex = ? where userId = ?";
paras[0] = json.getString(MsgKeys.userSex);
case iMoMoMsgTypes.RESET_BIRTHDAY:
sql = "update imomo_clients set userBirthday = ? where userId = ?";
paras[0] = json.getString(MsgKeys.userBirthday);
case iMoMoMsgTypes.RESET_SIGNATUE:
sql = "update imomo_clients set personSignature = ? where userId = ?";
paras[0] = json.getString(MsgKeys.personSignature);
paras[1] = userId;
if (model.updateDb(sql, paras)) {
System.out.println("修改用信息成功");
System.out.println("修改用户信失败");
// 不发送通知消息
* 处理修改头像
* @param session
* @param moMoMsg
public void handleResetHead(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userId = json.getString(MsgKeys.userId);
String userHeadPath = StaticValues.HEAD_P_PATH + userId + ".png";
iMoMoMsg Notify = new iMoMoMsg();
Notify.symbol = '+';
JSONObject NotifyJson = new JSONObject();
FileTools.getInstance().saveMultyFile(userHeadPath,
moMoMsg.msgBytes);
// 修改成功
System.out.println("修改头像成功");
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.RESET_HEAD_SUCCESS);
SqlModel model = new SqlModel();
String[] friendList = model.getFriendIds(userId);
iMoMoMsg resetHead = new iMoMoMsg();
resetHead.symbol = '-';
JSONObject resetHeadJson = new JSONObject();
resetHeadJson.put(MsgKeys.msgType, iMoMoMsgTypes.RESET_HEAD);
resetHeadJson.put(MsgKeys.friendId, userId);// 通知好友是谁改头像的
resetHeadJson.put(MsgKeys.userId, userId);// 我发的
resetHead.msgJson = resetHeadJson.toJSONString();
resetHead.msgBytes = moMoMsg.msgB
for (String friendId : friendList) {
// 判断是否在线,在线直接转发,不在线缓存到数据库中
if (ManageClientSession.isContainsId(friendId)) {
ManageClientSession.getSession(friendId).write(resetHead);
System.out.println(“转发成功..”);
if (!model.isTableExists(“mc_” + friendId))// “mc_” + userId
model.createCacheTable(friendId);// 创建缓存数据库
MsgDb msgDb = MsgTranceUtil.getInstance().Trance_Net2Db(
resetHead);
if (model.insertCacheMsg(msgDb, friendId)) {
System.out.println(“缓存成功”);
System.out.println(“缓存失败”);
} catch (Exception e) {
// 修改失败
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.RESET_HEAD_FAILED);
System.out.println(“修改头像失败”);
Notify.msgJson = NotifyJson.toJSONString();
session.write(Notify);
* 处理用户登录
* @param session
* @param moMoMsg
public void handleLogin(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
iMoMoMsg Notify = new iMoMoMsg();
Notify.symbol = '+';
JSONObject NotifyJson = new JSONObject();
if (new SqlModel().checkUser(json.getString(MsgKeys.userEmail),
json.getString(MsgKeys.userPasswd))) {
System.out.println(“合法用户”);
// 合法用户
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.LOGIN_SUCCESS);
// 非法用户
System.out.println(“非法用户”);
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.LOGIN_FAILED);
Notify.msgJson = NotifyJson.toJSONString();
session.write(Notify);
* 处理用户超级登录
* @param session
* @param moMoMsg
public void handleLoginSuper(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
SqlModel model = new SqlModel();
String userEmail = json.getString(MsgKeys.userEmail);
int msgtype = json.getIntValue(MsgKeys.msgType);
JSONObject info = model.getUserInfo(userEmail, true);
String userId = info.getString(MsgKeys.userId);
iMoMoMsg Notify = new iMoMoMsg();
JSONObject NotifyJson = new JSONObject();
if (info != null) {
// 获得用户信息成功
// 管理会话 、Id
ManageIdSessions.addUserId(session.getId(), userId);
ManageClientSession.addSession(info.getString(MsgKeys.userId),
NotifyJson.put(MsgKeys.userId, userId);
NotifyJson.put(MsgKeys.userName, info.getString(MsgKeys.userName));
NotifyJson.put(MsgKeys.userSex, info.getString(MsgKeys.userSex));
NotifyJson.put(MsgKeys.userBirthday,
info.getString(MsgKeys.userBirthday));
NotifyJson.put(MsgKeys.personSignature,
info.getString(MsgKeys.personSignature));
NotifyJson.put(MsgKeys.vitalityValue,
info.getIntValue(MsgKeys.vitalityValue));
if (msgtype == iMoMoMsgTypes.LOGIN_SUPER_HEAD) {
Notify.symbol = '+';
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.LOGIN_SUPER_HEAD);
System.out.println("用户本地有头像");
} else if (msgtype == iMoMoMsgTypes.LOGIN_SUPER_NOHEAD) {
System.out.println("用户本地无头像");
Notify.symbol = '-';
NotifyJson.put(MsgKeys.msgType,
iMoMoMsgTypes.LOGIN_SUPER_NOHEAD);
Notify.msgBytes = FileTools.getInstance().getMultyFileBytes(
info.getString(MsgKeys.userHeadPath));
NotifyJson.put(MsgKeys.msgType, iMoMoMsgTypes.LOGIN_SUPER_FAILED);
Notify.msgJson = NotifyJson.toJSONString();
session.write(Notify);
// 判断是否有离线消息,有则转发,
sendCacheMsg(session, userId, model);
* 转发离线消息
* @param session
* @param userId
* @param model
private void sendCacheMsg(IoSession session, String userId, SqlModel model) {
if (model.isTableExists("mc_" + userId)) {
if (model.getMsgCount(userId) & 0) {
// 说明有离线消息
List&MsgDb& list = model.getCacheMsgs(userId);
for (MsgDb msgDb : list) {
iMoMoMsg moMsg = MsgTranceUtil.getInstance().Trance_Db2Net(
session.write(moMsg);
// 清空数据库离线文件
model.clearMsgCache(userId);
* 处理用户位置消息,记录用户的位置
* @param moMoMsg
public void handleLocation(iMoMoMsg moMoMsg) {
JSONObject loc_json = JSON.parseObject(moMoMsg.msgJson);
String userId = loc_json.getString(MsgKeys.userId);
String province = loc_json.getString(MsgKeys.loc_province);
myLocationBean locationBean = new myLocationBean();
locationBean.province =
locationBean.longitude = loc_json.getDoubleValue(MsgKeys.loc_Longitude);
locationBean.latitude = loc_json.getDoubleValue(MsgKeys.loc_Latitude);
System.out.println(locationBean.toString());
if (ManageLocMap.isContainsProvince(province)) {
ManageLocMap.getAProvinceLoc(province).addLocation(userId,
locationBean);// 添加到所在省
ManageAProvinceLoc AProvinceLoc = new ManageAProvinceLoc(province);
AProvinceLoc.addLocation(userId, locationBean);
ManageLocMap.addAProvinceLoc(province, AProvinceLoc);
* 处理请求得到周围陌生人位置
* @param moMoMsg
public void handleGetStrangersLoc(iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
int type = json.getIntValue(MsgKeys.msgType);
String userId = json.getString(MsgKeys.userId);
String province = json.getString(MsgKeys.loc_province);
double longitude = json.getDoubleValue(MsgKeys.loc_Longitude);
double latitude = json.getDoubleValue(MsgKeys.loc_Latitude);
// 计算距离,然后获取陌生人信息(姓名,Id,位置)
iMoMoMsg moMsg = new iMoMoMsg();
moMsg.symbol = '+';
JSONObject jsonSend = new JSONObject();
if (type == iMoMoMsgTypes.GET_STRANGERS_LOC_ONEKM) {
// 一公里内
// /** 测试... */
// List&StrangerBean& list = new ManageAProvinceLoc("sd")
// .getDisStrangers(true, userId, 0);
// JSONArray jsonArray = (JSONArray) JSONArray.toJSON(list);
// jsonSend.put(MsgKeys.msgType,
// iMoMoMsgTypes.STRANGERS_LIST_ONEKM);
// jsonSend.put(MsgKeys.strangerList, jsonArray);
if (ManageLocMap.isContainsProvince(province)) {
// 当前省有在线用户
ManageAProvinceLoc aProvinceLoc = ManageLocMap
.getAProvinceLoc(province);
if (aProvinceLoc.getCount() & 1) {
List&StrangerBean& list = aProvinceLoc.getDisStrangers(
true, userId, 0);
JSONArray jsonArray = (JSONArray) JSONArray.toJSON(list);
jsonSend.put(MsgKeys.msgType,
iMoMoMsgTypes.STRANGERS_LIST_ONEKM);
jsonSend.put(MsgKeys.strangerList, jsonArray);
jsonSend.put(MsgKeys.msgType, iMoMoMsgTypes.NO_STRANGERS);
jsonSend.put(MsgKeys.msgType, iMoMoMsgTypes.NO_STRANGERS);
} else if (type == iMoMoMsgTypes.GET_STRANGERS_LOC_MORE) {
// 大于一公里
int distRange = json.getIntValue(MsgKeys.distRange);
// /** 测试... */
// List&StrangerBean& list = new ManageAProvinceLoc("sd")
// .getDisStrangers(false, userId, distRange);
// JSONArray jsonArray = (JSONArray) JSONArray.toJSON(list);
// jsonSend.put(MsgKeys.msgType, iMoMoMsgTypes.STRANGERS_LIST_MORE);
// jsonSend.put(MsgKeys.strangerList, jsonArray);
// System.out.println("大于一公里 : " + jsonSend.toJSONString());
if (ManageLocMap.isContainsProvince(province)) {
// 当前省有在线用户
ManageAProvinceLoc aProvinceLoc = ManageLocMap
.getAProvinceLoc(province);
if (aProvinceLoc.getCount() & 1) {
List&StrangerBean& list = aProvinceLoc.getDisStrangers(
false, userId, distRange);
JSONArray jsonArray = (JSONArray) JSONArray.toJSON(list);
jsonSend.put(MsgKeys.msgType,
iMoMoMsgTypes.STRANGERS_LIST_MORE);
jsonSend.put(MsgKeys.strangerList, jsonArray);
jsonSend.put(MsgKeys.msgType, iMoMoMsgTypes.NO_STRANGERS);
jsonSend.put(MsgKeys.msgType, iMoMoMsgTypes.NO_STRANGERS);
moMsg.msgJson = jsonSend.toJSONString();
ManageClientSession.getSession(userId).write(moMsg);
* 处理请求得到一个陌生人的具体信息,(区分本地有头像 无头像)
* @param moMoMsg
public void handleGetFriendInfo(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
int type = json.getInteger(MsgKeys.msgType);
String userId = json.getString(MsgKeys.userId);
String friendId = json.getString(MsgKeys.friendId);
SqlModel model = new SqlModel();
JSONObject info = model.getUserInfo(friendId, false);
iMoMoMsg moMsg = new iMoMoMsg();
if (type == iMoMoMsgTypes.GETA_FRIEND_INFO_HEAD) {
moMsg.symbol = '+';
info.put(MsgKeys.msgType, iMoMoMsgTypes.GETA_FRIEND_INFO_HEAD);
} else if (type == iMoMoMsgTypes.GETA_FRIEND_INFO_NOHEAD) {
String headPath = info.getString(MsgKeys.userHeadPath);
moMsg.msgBytes = FileTools.getInstance()
.getMultyFileBytes(headPath);
moMsg.symbol = '-';
info.put(MsgKeys.msgType, iMoMoMsgTypes.GETA_FRIEND_INFO_NOHEAD);
} else if (type == iMoMoMsgTypes.GET_STRANGER_INFO) {
String headPath = info.getString(MsgKeys.userHeadPath);
moMsg.msgBytes = FileTools.getInstance()
.getMultyFileBytes(headPath);
moMsg.symbol = '-';
info.put(MsgKeys.msgType, iMoMoMsgTypes.GET_STRANGER_INFO);
info.remove(MsgKeys.userHeadPath);
moMsg.msgJson = info.toJSONString();
session.write(moMsg);
// ManageClientSession.getSession(userId).write(moMsg);
* 处理添加好友
* @param session
* @param moMoMsg
public void handleAddFriend(IoSession session, iMoMoMsg moMoMsg) {
System.out.println(“添加好友—”);
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userId = json.getString(MsgKeys.userId);
String friendId = json.getString(MsgKeys.friendId);
iMoMoMsg moMsg = new iMoMoMsg();
moMsg.symbol = ‘+’;
JSONObject notify = new JSONObject();
SqlModel model = new SqlModel();
if (model.addFriend(userId, friendId)) {
// 添加好友成功
notify.put(MsgKeys.msgType, iMoMoMsgTypes.ADD_FRIEND_SUCCESS);
// 自动添加到对方好友列表中,然后发送提示信息(在线才发,不在线转离线消息)
model.addFriend(friendId, userId);
// 判断是否在线,在线直接转发,不在线缓存到数据库中
// 1.得到添加好友用户的信息
JSONObject info = model.getUserInfo(userId, false);
iMoMoMsg addMsg = new iMoMoMsg();
addMsg.symbol = '-';
String headPath = info.getString(MsgKeys.userHeadPath);
addMsg.msgBytes = FileTools.getInstance().getMultyFileBytes(
headPath);
info.put(MsgKeys.msgType, iMoMoMsgTypes.ADD_FRIEND);
info.remove(MsgKeys.userHeadPath);
// JSONObject notyadd = new JSONObject();
// notyadd.put(MsgKeys.msgType, iMoMoMsgTypes.ADD_FRIEND);
info.put(MsgKeys.friendId, userId);
String friendName = model.getUserName(userId, false);
info.put(MsgKeys.friendName, friendName);
addMsg.msgJson = info.toJSONString();
if (ManageClientSession.isContainsId(friendId)) {
ManageClientSession.getSession(friendId).write(addMsg);
System.out.println("转发成功..");
if (!model.isTableExists("mc_" + friendId))// "mc_" + userId
model.createCacheTable(friendId);// 创建缓存数据库
MsgDb msgDb = MsgTranceUtil.getInstance().Trance_Net2Db(addMsg);
if (model.insertCacheMsg(msgDb, friendId)) {
System.out.println(“缓存成功”);
System.out.println(“缓存失败”);
notify.put(MsgKeys.msgType, iMoMoMsgTypes.ADD_FRIEND_FAILED);
moMsg.msgJson = notify.toJSONString();
session.write(moMsg);
* 处理删除好友
* @param session
* @param moMoMsg
public void handleDeleteFriend(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userId = json.getString(MsgKeys.userId);
String friendId = json.getString(MsgKeys.friendId);
SqlModel model = new SqlModel();
model.deleteFriend(userId, friendId);
model.deleteFriend(friendId, userId);// 解除双方关系
* 处理获取好友Id列表
* @param session
* @param moMoMsg
public void handleGetFriendIdList(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userId = json.getString(MsgKeys.userId);
SqlModel model = new SqlModel();
String[] ids = model.getFriendIds(userId);
String IdList = "";
if (ids.length & 0) {
for (String string : ids) {
IdList += string + ",";
System.out.println(userId + “的好友列表:” + IdList);
IdList = “none”;// 无好友
System.out.println(userId + “无好友”);
iMoMoMsg moMsg = new iMoMoMsg();
moMsg.symbol = ‘+’;
JSONObject jsonSend = new JSONObject();
jsonSend.put(MsgKeys.msgType, iMoMoMsgTypes.FRIEND_ID_LIST);
jsonSend.put(MsgKeys.friendIdList, IdList);
moMsg.msgJson = jsonSend.toJSONString();
session.write(moMsg);
* 处理用户反馈信息
* @param moMoMsg
public void handleReback(iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userId = json.getString(MsgKeys.userId);
String reback = json.getString(MsgKeys.msgCotent);
FileTools.getInstance().saveReback(userId, reback);
* @param moMoMsg
public void handleVitality(iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
int type = json.getIntValue(MsgKeys.msgType);
String userId = json.getString(MsgKeys.userId);
SqlModel model = new SqlModel();
if(type == iMoMoMsgTypes.PASS_GAME){
model.UpdateVitality(userId, -1);
} else if(type == iMoMoMsgTypes.SIGN){
model.UpdateVitality(userId, 1);
* 创建多人聊天
* @param session
* @param moMoMsg
public void handleCreateGroup(IoSession session, iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userId = json.getString(MsgKeys.userId);
String groupName = json.getString(MsgKeys.groupName);
String groupTopic = json.getString(MsgKeys.groupTopic);
String province = json.getString(MsgKeys.loc_province);
SqlModel model = new SqlModel();
GroupInfo gInfo = new GroupInfo();
gInfo.creator = model.getUserName(userId, false);
gInfo.createTime = System.currentTimeMillis();
gInfo.groupId = "group_" + userId + "_" + gInfo.createT
gInfo.groupName = groupN
gInfo.groupTopic = groupT
String groupIconPath = StaticValues.HEAD_P_PATH + gInfo.groupId
FileTools.getInstance().saveMultyFile(groupIconPath, moMoMsg.msgBytes);
// 返回是否创建成功消息
if (ManageGroups.addGroup(gInfo.groupId, gInfo)) {
model.UpdateVitality(userId, -1);
ManageGroups.getGroup(gInfo.groupId).joinGroup(userId);// 把创建用户添加到群组
if(!ManageGroups.isHaveGroup){
ManageGroups.keepWatching();//开启守护线程
iMoMoMsg moMsg = new iMoMoMsg();
moMsg.symbol = '-';
JSONObject jsonSend = new JSONObject();
jsonSend.put(MsgKeys.msgType, iMoMoMsgTypes.CREATE_GROUP_SUCCESS);
jsonSend.put(MsgKeys.groupId, gInfo.groupId);
jsonSend.put(MsgKeys.groupName, gInfo.groupName);
jsonSend.put(MsgKeys.groupTopic, gInfo.groupTopic);
moMsg.msgBytes = FileTools.getInstance().getMultyFileBytes(
groupIconPath);
moMsg.msgJson = jsonSend.toJSONString();
session.write(moMsg);
if (ManageLocMap.isContainsProvince(province)) {
// 当前省有在线用户
ManageAProvinceLoc aProvinceLoc = ManageLocMap
.getAProvinceLoc(province);
if (aProvinceLoc.getCount() & 1) {
List&StrangerBean& list = aProvinceLoc.getDisStrangers(
true, userId, 0);
if (list.size() & 0) {
System.out.println("周围的人 : ");
iMoMoMsg inviteMsg = new iMoMoMsg();
inviteMsg.symbol = '-';
JSONObject inviteJson = new JSONObject();
inviteJson.put(MsgKeys.msgType,
iMoMoMsgTypes.INVITE_TO_GROUP);
inviteJson.put(MsgKeys.groupCreator, gInfo.creator);
inviteJson.put(MsgKeys.groupId, gInfo.groupId);
inviteJson.put(MsgKeys.groupName, gInfo.groupName);
inviteJson.put(MsgKeys.groupTopic, gInfo.groupTopic);
inviteMsg.msgBytes = FileTools.getInstance()
.getMultyFileBytes(groupIconPath);
inviteMsg.msgJson = inviteJson.toJSONString();
for (StrangerBean bean : list) {
System.out.println("Id = " + bean.strangerId);
IoSession ivSession = ManageClientSession
.getSession(bean.strangerId);
ivSession.write(inviteMsg);
iMoMoMsg moMsg = new iMoMoMsg();
moMsg.symbol = '+';
JSONObject jsonSend = new JSONObject();
jsonSend.put(MsgKeys.msgType, iMoMoMsgTypes.CREATE_GROUP_FAILED);
moMsg.msgJson = jsonSend.toJSONString();
session.write(moMsg);
* 同意加入群组
* @param moMoMsg
public void handleRecieveToGroup(iMoMoMsg moMoMsg) {
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
String userId = json.getString(MsgKeys.userId);
String groupId = json.getString(MsgKeys.groupId);
GroupInfo group = ManageGroups.getGroup(groupId);
group.joinGroup(userId);
* 处理发送消息(在线则转发,不在线则缓存)
* @param session
* @param moMoMsg
public void handleChatMsg(iMoMoMsg moMoMsg) {
System.out.println(“处理聊天消息”);
JSONObject json = JSON.parseObject(moMoMsg.msgJson);
int isGroupMsg = 0;
if (json.containsKey(MsgKeys.isGroupMsg)) {
isGroupMsg = json.getInteger(MsgKeys.isGroupMsg);
System.out.println(“isGroupMsg = ” + isGroupMsg);
// 判断是否是群组信息,不是则转发给单独用户
if (isGroupMsg == 0) {
String getterId = json.getString(MsgKeys.friendId);
// 判断是否在线,在线直接转发,不在线缓存到数据库中
sendMsgToUser(moMoMsg, getterId);
} else if (isGroupMsg == iMoMoMsgTypes.GROUP_MSG) {
String userId = json.getString(MsgKeys.userId);// 发送者
String groupId = json.getString(MsgKeys.friendId);// 接收好友的Id
String sendTime = json.getString(MsgKeys.sendTime);// 发送时间
System.out.println(“groupId = ” + groupId);
if (ManageGroups.isContainsGroupId(groupId)) {
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:59497次
积分:1994
积分:1994
排名:第17345名
原创:81篇
评论:101条
文章:13篇
阅读:12273
文章:18篇
阅读:18522
(1)(4)(1)(7)(4)(2)(1)(3)(13)(23)(12)(2)(9)(6)

我要回帖

更多关于 霹雳布袋戏之霹雳城 的文章

 

随机推荐