基于云信的app聊天(IM)功能模块开发(一)——创建用户
来源:互联网 发布:郁冬 it 编辑:程序博客网 时间:2024/05/19 21:44
最近在开发的时候需要用到即时通讯模块(IM),由于自己开发IM模块太耗时耗力,决定使用网易的云信第三方服务,具体云信SDK如何使用我这里就不写了,请查看官网开发手册:http://dev.netease.im/
- 最先介绍的是注册用户模块:
由于使用的是第三方IM服务,只在IM上面会使用到云信服务器,但其他信息还是存储在自己的App服务器中,这就需要是App、AppServer、IMServer三方通讯。
每一个用户都配备一个云信ID(accid)和一个通行证(token)这都是在注册云信ID的时候云信服务端会返回回来的,建议保存在AppServer中,每次App客户端需要的时候想AppServer索取。要保证每个App客户端中只有一个accid。
下面是注册账号的流程图
在开发App客户端时需要云信SDK请前往官网下载:http://netease.im/im-sdk-demo
服务端接口:
/** * 云信服务接口 * @author 作者 E-mail:陈孜豪 1577408950@qq.com * @date 创建时间:2017年3月2日 下午4:05:32 * @version 1.0 * @parameter * @since * @return */public interface YunXinServer { // 注册云信ID String register(String userName); // 存储云信ID和token User saveAccidAndToken(String username, String accid, String token);}
服务端接口实现:
/** * @author 作者 E-mail:陈孜豪 1577408950@qq.com * @date 创建时间:2017年3月2日 下午4:20:37 * @version 1.0 * @parameter * @since * @return */@Servicepublic class YunXinServerImpl implements YunXinServer{ private static final Logger LOGGER = LoggerFactory.getLogger(UserServiceImpl.class); private final UserRepository userRepository; /** * 装载userRepository * * @param userRepository */ @Autowired public YunXinServerImpl(UserRepository userRepository) { this.userRepository = userRepository; } @Override public String register(String username) { // TODO Auto-generated method stub String accid= username; DefaultHttpClient httpClient = new DefaultHttpClient(); String url ="https://api.netease.im/nimserver/user/create.action"; HttpPost httpPost = new HttpPost(url); String appKey ="c0f965848c17b549289fe102f66237c9"; String appSecret = "7543c00029f7"; String nonce = "12345"; String curTime = String.valueOf((new Date()).getTime() / 1000L); String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);//参考 计算CheckSum的java代码 // 设置请求的header httpPost.addHeader("AppKey", appKey); httpPost.addHeader("Nonce", nonce); httpPost.addHeader("CurTime", curTime); httpPost.addHeader("CheckSum", checkSum); httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); // 设置请求的参数 List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("accid", accid)); try { httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // 执行请求 HttpResponse response = null; try { response = httpClient.execute(httpPost); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 返回结果 String result = ""; try { result = EntityUtils.toString(response.getEntity(), "utf-8"); }catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(result); return result; } @Override public User saveAccidAndToken(String username, String accid, String token) { User user = userRepository.findByUsername(username); user.setAccid(accid); user.setToken(token); return userRepository.save(user); }}
Controller中注册逻辑:
...上面的appServer端注册过程省略// 创建云信ID获取accid以及token String accid = ""; String token = ""; String name = ""; String desc = ""; try { String yunXinResult = yunXinServer.register(form.getUsername()); JSONObject jsonObject = JSONObject.parseObject(yunXinResult); int code = jsonObject.getInteger("code"); if (code == 200) { JSONObject info = jsonObject.getJSONObject("info"); accid = info.getString("accid"); token = info.getString("token"); name = info.getString("name"); } else { desc = jsonObject.getString("desc"); } // 200、403、414、416、431、500 if (code == 403) { message.setMsg(0, "403失败"); return new ResponseEntity<Message>(message, HttpStatus.OK); } if (code == 414) { message.setMsg(0, "414失败"); return new ResponseEntity<Message>(message, HttpStatus.OK); } if (code == 416) { message.setMsg(0, "416失败"); return new ResponseEntity<Message>(message, HttpStatus.OK); } if (code == 431) { message.setMsg(0, "431失败"); return new ResponseEntity<Message>(message, HttpStatus.OK); } if (code == 500) { message.setMsg(0, "500失败"); return new ResponseEntity<Message>(message, HttpStatus.OK); } } catch (Exception e) { message.setMsg(0, "与云信server通讯失败"); return new ResponseEntity<Message>(message, HttpStatus.OK); } yunXinServer.saveAccidAndToken(form.getUsername(), accid, token); // ok, redirect message.setMsg(1, "用户创建成功");
0 0
- 基于云信的app聊天(IM)功能模块开发(一)——创建用户
- Android基于环信SDK开发IM即时聊天(一)
- 基于WIFI direct的即时聊天app开发(一)
- Android开发--IM聊天项目(一)
- 基于Tcp通信的聊天程序微风IM(c#开源) -技术分析(一) 用户管理
- Android基于环信SDK开发IM即时聊天(二)
- 基于PHP的APP微信支付开发(一)
- 基于Bmob,环信easeUI的校园二手交易市场——用户管理(含头像),数据管理,文件管理(图片管理),聊天功能的开发
- Android基于环信SDK开发IM即时聊天
- IM类型app开发浅谈(一)---聊天中的消息处理
- Android 基于环信即时云的IM开发
- Android 基于环信即时云的IM开发
- mui初级入门教程(五)— 聊聊即时通讯(IM),基于环信 web im SDK
- 【Tech-IM】IM类型app开发浅谈(一)---聊天中的消息处理
- 【JavaWeb】关于WebSocket的IM在线聊天技术(一)
- Android开发--IM聊天项目(二)
- Android开发--IM聊天项目(三)
- 基于PHP的APP微信支付开发(二)
- Android基础教程-各类文件、 目录的用途
- 接口的作用
- -SharedPreferences详解
- iOS数据安全—加密解密「学习总结」
- Linux学习之——yum命令
- 基于云信的app聊天(IM)功能模块开发(一)——创建用户
- 查看动态参数
- C语言正确使用extern关键字
- Google设计师谈VR设计的现状、挑战与前景
- 使用springboot集成jseesite
- PHP7新特性 简要笔记
- 【纽约】-C- Immortal Porpoises(矩阵)
- 创建表空间以及用户,授予权限,查看表空间名称及大小,物理文件的名称及大小,数据库的创建日期和归档方式,数据库的版本,数据库库对象,表空间的使用情况,表空间读写
- springboot学习(二) Spring Boot 快速入门