Commit 408ade04 by lyhuang

来电弹框功能初步实现

Signed-off-by: lyhuang <lyhuang@ctrip.com>
parent 3ad5328e
......@@ -8,6 +8,7 @@ import org.apache.commons.lang.StringUtils;
import org.jsoup.helper.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.context.SecurityContextHolder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
......@@ -27,6 +28,7 @@ import com.ctrip.fun.common.vo.user.UserQuery;
//import cc.rssoft.framework.config.service.ConfigService;
//import cc.rssoft.framework.springutil.ApplicationHelper;
//import cc.rssoft.framework.websocket.WebsocketService;
......@@ -60,6 +62,9 @@ public class NewStateEventHandler extends AbstractEventHandler {
private UserService userService;
@Override
public String handle(JSONObject jsonObject) {
// 先从json对象转成java对象,方便get
......@@ -75,8 +80,10 @@ public class NewStateEventHandler extends AbstractEventHandler {
if ("RINGING".equals(event.getChannelState())) {
logger.debug("收到了ringing消息: " + event.getChannel() + event.getConnectedLineNumber());
String mobileNo = event.getConnectedLineNumber();
//来电手机号码
String mobileNo = event.getConnectedLineNumber().replaceFirst("^0*", "");
String username = SecurityContextHolder.getContext().getAuthentication().getName();
NewStateWebSocket.unicast(username,mobileNo);
try {
if (StringUtil.isBlank(mobileNo)) {
logger.error("mobile is null in ccdesk!");
......@@ -97,9 +104,9 @@ public class NewStateEventHandler extends AbstractEventHandler {
/*
/*
// 调rsmw接口,查询绑定关系,拿到aid,也就时websocket里的clientId
......
package com.ctrip.fun.admin.eventhandler;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/websocket/{userName}")
public class NewStateWebSocket {
private NewStateWebSocket(){}
private static NewStateWebSocket single = null;
public static NewStateWebSocket getInstance(){
if(single==null){
single = new NewStateWebSocket();
}
return single;
}
private static Map<String, Session> sessionMap=new HashMap<String, Session>();//在线的客户端session集合,只在第一次new的时候初始化。
/**
* 接收信息事件
* @param message 客户端发来的消息
* @param session 当前会话
*/
@OnMessage
public void onMessage(String message,Session session,@PathParam(value="userName")String userName)throws Exception {
try {
Iterator<String> it = sessionMap.keySet().iterator();
//循环给每个客户端发送信息
while(it.hasNext()){
String key = (String) it.next();
Session value = sessionMap.get(key);
value.getBasicRemote().sendText(message);
}
System.out.println("用户"+userName+"说:"+message+"。");
System.out.println("当前在线人数:"+sessionMap.size());
} catch (Exception e) {
System.out.println("接收消息事件异常!");
}
}
/**
* 打开连接事件
* @throws Exception
*/
@OnOpen
public void onOpen(Session session,@PathParam(value="userName")String userName) throws Exception {
System.out.println("打开连接成功!");
sessionMap.put(userName, session);
System.out.println("用户"+userName+"进来了。。。");
System.out.println("当前在线人数:"+sessionMap.size());
}
/**
* 关闭连接事件
*/
@OnClose
public void onClose(Session session,@PathParam(value="userName")String userName) {
System.out.println("关闭连接成功!");
System.out.println("用户"+userName+"离开了。。。");
sessionMap.remove(userName);
System.out.println("当前在线人数:"+sessionMap.size());
}
/**
* 错误信息响应事件
* @param session
* @param throwable
*/
@OnError
public void OnError(Session session,Throwable throwable,@PathParam(value="userName")String userName) {
System.out.println("异常:"+throwable.getMessage());
System.out.println("用户"+userName+"的连接出现了错误。。。");
System.out.println("当前在线人数:"+sessionMap.size());
}
public static void unicast(String username, String mobileNo) {
String message = "/system/user/"+mobileNo+"/detailByUid";
Session session = sessionMap.get(username);
NewStateWebSocket socket = NewStateWebSocket.getInstance();
try {
socket.onMessage(message, session, username);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/*var timestamp=Date.parse(new Date());
var webSocket=new WebSocket("ws://localhost:8080/websocket/"+timestamp);
webSocket.onerror = function(event) {
alert(event.data);
};
webSocket.onopen = function(event) {
document.getElementById("list").innerHTML="连接建立成功!";
};
webSocket.onmessage = function(event) {
document.getElementById("list").innerHTML+="<br/>" + event.data;
window.open("http://www.qq.com", "用户来电通知");
};*/
var webSocket = null;
var url = "ws://192.168.10.5:8080/websocket/";
function connectSocket(loginUsername){
url +=loginUsername
alert("url:"+url);
// var timestamp=Date.parse(new Date());
webSocket=new WebSocket(url);
webSocket.onerror = function(event) {
alert(event.data);
};
webSocket.onopen = function(event) {
// document.getElementById("list").innerHTML="连接建立成功!";
};
webSocket.onmessage = function(event) {
// document.getElementById("list").innerHTML+="<br/>" + event.data;
// window.open("http://www.qq.com", "用户来电通知");
window.open(event.data, "用户来电通知");
};
socket.onclose = function(event){
};
}
//关闭Socket
function closeSocket(){
webSocket.close();
}
function sendMessage() {
var msg=document.getElementById("nickname").value+":"+document.getElementById("textarea").value;
document.getElementById("textarea").value="";
webSocket.send(msg);
}
$(document).ready(function(data){
//查询绑定关系
var loginUsername = $("#loginUsername").val();
......@@ -17,6 +70,7 @@
}
$(".navbar .pull-right .dropdown").html(vhtml);
});
connect(loginUsername);
});
$('#bindModal').on('show.bs.modal', function (e) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment