问题描述
应该不是服务端问题贴客户端代码,js部分。框架应该没问题<head><title>聊天室</title><metacontent="text/html;charset=gbk"http-equiv="Content-Type"><linkrel="stylesheet"type="text/css"href="css/css.css"/><scriptsrc="js/jquery.js"type="text/javascript"></script><scripttype="text/javascript">varurl="192.168.1.22:9898/chat";varname;$(function(){varWebSocketsExist=true;try{vardummy=newWebSocket("ws://"+url);}catch(ex){try{webSocket=newMozWebSocket("ws://"+url);}catch(ex){WebSocketsExist=false;}}if(WebSocketsExist){Log("您的浏览器支持本聊天工具.您可以输入姓名后,点击"开始"尝试连接到聊天服务器!","OK");name=Math.floor(Math.random()*(1000000+1));$("#txtName").val(name)$("#txtName").change(function(){try{if(SocketCreated){SocketCreated=false;isUserloggedout=true;ws.close();$("#btnIn").val("开始");}else{name=$("#txtName").val();}}catch(ex){}});$("#btnIn").click(function(){if($("#txtName").val()==""||$("#txtName").val().trim()==""){alert("你叫什么?");return;}if($(this).val()=="开始"||$(this).val()=="连接"){$("#txtName").attr("disabled","disabled");ToggleConnectionClicked();}else{ToggleConnectionClicked();$("#txtName").removeAttr("disabled");}})}else{Log("您的浏览器不支持WebSocket。请选择其他的浏览器再尝试连接服务器。","ERROR");}$("#txtEdit").keypress(function(evt){if(evt.keyCode==13){$("#sendMsg").click();evt.preventDefault();}})})functionSendMsg(){}varws;varSocketCreated=false;varisUserloggedout=false;functionToggleConnectionClicked(){if(SocketCreated&&(ws.readyState==0||ws.readyState==1)){Log("离开聊天室...");SocketCreated=false;isUserloggedout=true;ws.close();}else{try{if("WebSocket"inwindow){ws=newWebSocket("ws://"+url+'?name='+escape(document.getElementById("txtName").value));}elseif("MozWebSocket"inwindow){ws=newMozWebSocket("ws://"+url+'?name='+escape(document.getElementById("txtName").value));}SocketCreated=true;isUserloggedout=false;}catch(ex){Log(ex,"ERROR");return;}$("#btnIn").val("断开");ws.onopen=WSonOpen;ws.onmessage=WSonMessage;ws.onclose=WSonClose;ws.onerror=WSonError;}};functionWSonOpen(){Log("连接已经建立。","OK");//$("#SendDataContainer").show();ws.send("login:"+name);};functionWSonMessage(event){//alert(event.data);varjsonobj=event.data;if(jsonobj.indexOf("活跃用户")>-1){varjs=jsonobj.replace(/,/g,'<br>');userLog(js);}else{Log(jsonobj);}};functionWSonClose(){if(isUserloggedout){Log("【"+name+"】离开了聊天室!");}name=$("#txtName").val();$("#btnIn").val("连接");//$("#SendDataContainer").hide();};functionWSonError(){Log("远程连接中断。","ERROR");name=$("#txtName").val();$("#btnIn").val("连接");};functionSendDataClicked(){if($("#tors").val()==""){if(document.getElementById("txtEdit").value.trim()!=""){ws.send($("#txtEdit").val());//ws.send("<div>"+name+":"+$("#txtEdit").val()+"</div>");document.getElementById("txtEdit").value="";}}else{if(document.getElementById("txtEdit").value.trim()!=""){ws.send($("#txtEdit").val()+""+"@#$%^&*()"+$("#txtName").val()+"@#$%^&*()"+$("#tors").val()+"");document.getElementById("txtEdit").value="";}}};functionLog(Text,MessageType){if(MessageType=="OK")Text="<spanstyle='color:green;'>"+Text+"</span>";if(MessageType=="ERROR")Text="<spanstyle='color:red;'>"+Text+"</span>";$("#txtShow").prepend("<div>"+Text+"</div>");//if($("#txtShow").find("div").length>20){//$("#txtShow").html("");//}};functionuserLog(Text){Text="<spanstyle='color:red;'>"+Text+"</span>";document.getElementById("users").innerHTML=Text+"<br/>";varusers=document.getElementById("users");users.scrollTop=users.scrollHeight;};functionClear(){$("#txtShow").html("")}</script></head>
解决方案
解决方案二:
在你的userLog(js);语句上设置断点,并且为断点设置“条件表达式”为js.length()<4之类的,然后开始手动测试执行,看看能不能中断(自动进入调试模式)呗。或者你也可以在服务器端设置相同的中断机制,然后手动执行,尽量让问题尽早重现出来。
解决方案三:
其实说过很多次了,程序员编写代码根本不算什么本事,至少需要会调试。而仅仅贴出一堆代码,这是很给别人找麻烦的。你要先调试了,然后贴出你的调试之后的问题。不要说你“不知道如何为javascript设置断点、写条件中断表达式”,如果你的开发工具(例如vs)不具有高级的javascript调试、中断、变量监视、调用堆栈跟踪调试、web输出控制台查看、dom数据结构树查看等等功能,就不用玩儿开发了。其中最基本的一个功能,就是给javascrit代码设置调试中断点,并且给这个断点写一个条件表达式。
解决方案四:
受教了......
解决方案五:
引用1楼sp1234的回复:
在你的userLog(js);语句上设置断点,并且为断点设置“条件表达式”为js.length()<4之类的,然后开始手动测试执行,看看能不能中断(自动进入调试模式)呗。或者你也可以在服务器端设置相同的中断机制,然后手动执行,尽量让问题尽早重现出来。
我调试过了。在服务端就存在空连接,只是不知道空连接是怎么来的