websocket 不同的聊天框显示

easui tab 打开相同的表单,生成动态的 div,根据div id 提交不同的界面。

1.Open.jsp 选择聊天成员后,动态生成组,传给后台

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ page language="java" import="com.web.po.User" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

User u =(User)request.getSession().getAttribute("localUser");
String userName= u.getUsrName();
int uId= u.getId();
%>

<html>
<head>
<title>发送消息</title> 
<script type="text/javascript" src="<%=basePath %>/js/Date.js"></script>
<script type="text/javascript" src="<%=basePath %>/js/easyui/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="<%=basePath%>js/easyui/bootstrap/easyui.css">
<link rel="stylesheet" type="text/css" href="<%=basePath%>js/easyui/icon.css">
<link rel="stylesheet" type="text/css" href="<%=basePath%>js/easyui/color.css">
<link rel="stylesheet" type="text/css" href="<%=basePath%>js/easyui/demo.css">
<script type="text/javascript" src="<%=basePath%>js/easyui/jquery.min.js"></script>
<script type="text/javascript" src="<%=basePath%>js/easyui/jquery.easyui.min.js"></script>

<script type="text/javascript">
var index = 0;
function addPanel(){
index++
var fromUserId = $("#fromUserId").val();
var toUserId = $("#toId").val();
var title = $("#toName").val()+index;
if ($('#myChatting').tabs('exists', title)){   
        $('#myChatting').tabs('select', title);   
       
    } else {
    var url="listChatUser.action?fromUserId="+fromUserId+"&toUserId="+toUserId;
    window.open(url);
//         var content = '<iframe scrolling="auto" frameborder="0"  src="'+url+'" style="width:100%;height:100%;"></iframe>';   
//         $('#myChatting').tabs('add',{   
//             title:title,   
//             content:content,   
//             closable:true   
//         });   
    }   
}
</script>
</head>
<body>
<h2>欢迎 <%=userName %></h2>
<div id="myChatting" class="easyui-tabs" style="width:1000px;height:auto">
<div title="当前聊天" style="padding:10px">
    当前用户Id<input type="text" name="fromUserId" id="fromUserId" value="<%=uId %>" ><br>
  发送给  <input type="text" name="toName" id="toName" value="园园" ><br>
   <input type="text" name="toId" id="toId" value="2" > <br>
<div style="margin:20px 0 10px 0;">
<a href="#" class="easyui-linkbutton" onclick="addPanel()">Open</a>
</div>

   </div>
  
   <div title="聊天2" style="padding:10px">
  
     <p>聊天2进行中</p>

  
   </div>
  
</div>

</body>
</html>




2. window.jsp



<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page language="java" import="com.web.po.User" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

User u =(User)request.getSession().getAttribute("localUser");
String userName= u.getUsrName();
%>

<html>
<head>
<title>发送消息</title> 
<script type="text/javascript" src="<%=basePath %>/js/Date.js"></script>
<script type="text/javascript" src="<%=basePath %>/js/easyui/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="<%=basePath%>js/easyui/bootstrap/easyui.css">
<link rel="stylesheet" type="text/css" href="<%=basePath%>js/easyui/icon.css">
<link rel="stylesheet" type="text/css" href="<%=basePath%>js/easyui/color.css">
<link rel="stylesheet" type="text/css" href="<%=basePath%>js/easyui/demo.css">
<script type="text/javascript" src="<%=basePath%>js/easyui/jquery.min.js"></script>
<script type="text/javascript" src="<%=basePath%>js/easyui/jquery.easyui.min.js"></script>
</head>
<body>

<script type="text/javascript">
var websocket = null;
if ('WebSocket' in window) {
websocket = new WebSocket("ws://localhost:8080/MvcChat/webSocketServer.action");
}
websocket.onopen = onOpen;
websocket.onmessage = onMessage;
websocket.onerror = onError;
websocket.onclose = onClose;
     
function onOpen(openEvt) {
//alert(openEvt.data);
}

function onMessage(evt) {
var message= evt.data;
var getJson = message.substr(0, message.indexOf("}")+1);
var groupName= eval(getJson);
var msg =  message.substr( message.indexOf("}")+1,message.length);
updateMessage(msg,groupName);

}
function onError() {}
function onClose() {}

function updateMessage(data,groupName){
//不要使用传值,因为界面有多个数据,ajax无法区分哪一个

var oldMessage=$("#"+groupName+" div[id='showMessage']").html();
var newMessage = oldMessage+"<br>"+data;
alert(newMessage);
$("#"+groupName+" div[id='showMessage']").html(newMessage);
}

function doSend() {
if (websocket.readyState == websocket.OPEN) { 
            var msg = document.getElementById("inputMsg").value; 
            websocket.send(msg);//调用后台handleTextMessage方法
            alert("发送成功!"); 
        } else { 
        alert("连接失败!"); 
        } 
}

function sendMessage(groupName){


var message = $("#"+groupName+" textarea[id='message']").val();


if(message==null || message=="" || message==undefined){
alert("发送消息不能为空");
return;
}
var fromUserId = $("#"+groupName+" input[id='fromUserId']").val();

var toUserIds = "";
$("#"+groupName+" input[name='chatUserId']").each(function(){
if(toUserIds == ""|| toUserIds==null){
toUserIds = toUserIds+$(this).val();
}else{
toUserIds= toUserIds+","+$(this).val();
}
            
});

        if(toUserIds==""){
        alert("接受人员不能为空");
return;
}
//发送消息的同时,把自己也加进去
toUserIds=fromUserId+","+toUserIds;

$.ajax({
url:"<%=basePath %>/websocket/sendToMany.action",
method:"post",
data:"sendManyFrom="+fromUserId+"&sendToList="+toUserIds+"&message="+message+"&groupName="+groupName,
    success:function(data){   
    var groupName=eval(data);
    //重新给form的group赋值
    $("#"+groupName+" input[id='groupName']").val(groupName);
    $("#"+groupName+" textarea[id='message']").val('')
    }  
}
);

}




</script>

<div  id="${groupName}" >

    <input type="text"  id="fromUserId" value="${fromUserId }" />
    <input type="text" id="toId"  value="${toUserId }" />
    <input type="text"  id="groupName"  value="${groupName}"/>
      <div id="Message" class="easyui-panel"  title="聊天窗口" style="overflow-x:visible;width:705px;height:730px; split:true;overflow-y:visible">
<div class="easyui-layout" style="width:700;height:700; split:true">
    <div id="messageContent"  class="easyui-layout" data-options="region:'north'" style="width:700px;height:530 ;split:true">
       
      <div id="showMessage" data-options="region:'west'" style="width:550;height:530;split:true">
      
      </div>
       
           
      <div id="messageContent" data-options="region:'east'" style="width:150;height:530;split:true">
      <c:forEach var="user" items="${chattingUsers}" >
           ${user.usrName } <input type="hidden" name="chatUserId" value="${user.id }" >
              <c:if test="${user.onLine=='Y' }" >
               (在线)
              </c:if>
             <c:if test="${user.onLine=='N' }" >
               (已下线)
              </c:if>
      </c:forEach>
     
      </div>
    </div>
<div id="inputMessage" data-options="region:'south'" style="width:700;height:170">
    <textarea rows="5" cols="95" id="message" name="message" ></textarea>
    <br/>
    <button onclick="sendMessage('${groupName}')" >发送消息</button> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <button onclick="closePannel()" >退出聊天</button>
</div>

</div>
  </div>
 
  </div>
</body>
</html>

猜你喜欢

转载自a545807638.iteye.com/blog/2291866