zoukankan      html  css  js  c++  java
  • 只用js 实现的简约聊天框

    之前看到别人的网页打开后都有个聊天框,可以与同时在网上的网友聊点简单话题,于是便找了个最简单的方法

    使用js,客户端 打开页面,不断的给服务器发送请求来得到 新的消息

    用JavaScript实现的轮询的优点和缺点:

      1. 优点:很容易实现,不需要任何服务器端的特定功能,且在所有的浏览器上都能工作。

      2. 缺点:这种方法很少被用到,因为它是完全不具伸缩性的。试想一下,在100个客户端每个都发出2秒钟的轮询请求的情况下,所损失的带宽和资源数量,在这种情况下30%的请求没有返回数据。

    代码实现:页面使用了 Uediter 编辑器,后台存储最新消息,获取最新消息

    rootroom.js

    var login = true;
    //发送请求函数
    function sendRequest()
    {
    	if (ueditor.hasContents()) {
    		ueditor.sync();
    		$("#chatMsg").val(ueditor.getContent());
    	}
    	//input是个全局变量,就是用户输入聊天信息的单行文本框
    	var chatMsg = $("#chatMsg").val();
    	var datas="chatMsg=" + chatMsg;
    	$.ajax({
    		type: "post",
    		url: "/chat",
    		data: datas,
    		datatype: "text",
    		success:function(data){
    			if(data=="nologin")
    			{
    				login=false;
    				alert("您还没有登录,请先登录");
    				window.location.href="/index.jsp";
    			}
    			else
    			{
    				login=true;
    				//使用chatArea多行文本域显示服务器响应的文本
    				$("#chatArea").html(data);
    			}
    			//清空输入框的内容
    			$("#chatMsg").val("");
    			ueditor.setContent("");
    		}
    	});
    }
    function sendEmptyRequest()
    {
    	var datas="";
    	$.ajax({
    		type: "post",
    		url: "/chat",
    		data: datas,
    		datatype: "text",
    		success:function(data){
    			
    			if(data=="nologin")
    			{
    				login=false;
    				alert("您还没有登录,请先登录");
    				window.location.href="/index.jsp";
    			}
    			else
    			{
    				login=true;
    				//使用chatArea多行文本域显示服务器响应的文本
    				$("#chatArea").html(data);
    			}
    		}
    			
    	});
    
    	//指定0.8s之后再次发送请求
    	if(login==true)
    	{
    		setTimeout("sendEmptyRequest()" , 800);
    	}
    }
    
    function enterHandler(event)
    {
    	//获取用户单击键盘的“键值”
    	var keyCode = event.keyCode ? event.keyCode 
    		: event.which ? event.which : event.charCode;
    	//如果是回车键
    	if (keyCode == 13)
    	{
    		sendRequest();
    	}
    }
    

      

  • 相关阅读:
    IE10、IE11下SCRIPT5009: “__doPostBack”未定义
    CSS Hack大全-可区分出IE6-IE10、FireFox、Chrome、Opera
    HTML head 头标签
    html5匹配不同分辨率样式
    html5关键帧动画,一个小例子快速理解关键帧动画
    导入Excel到数据库
    JavaScript树(一) 简介
    深入解析浏览器的幕后工作原理(五) 呈现树
    深入解析浏览器的幕后工作原理(四) DOM树
    深入解析浏览器的幕后工作原理(三) 呈现树和 DOM 树的关系
  • 原文地址:https://www.cnblogs.com/panie2015/p/5563934.html
Copyright © 2011-2022 走看看