Ajax B/S 聊天工具txt文件保存
打算做一个两个或多个网页之间交流的功能,思路是多个页面聊天的内容存放到一个文件里,每个页面都有提交聊天功能,当提交聊天信息时保存到上面那个文件里,
在每个也页面里放一个定时器,每秒钟获取聊天文件里的记录信息与自己当前的信息是否一致,如果大于自己的信息数量,说明了有别人提交信息了,那么就把聊天记录的信息追加到自己的浏览器里。
js起到了很重要的部分, 定时器,信息计数器都用到了js。
需要一个ajaxserver页面,一个聊天记录txt文件。
当客户端通过ajax提交聊天信息时,ajaxserver里读取提交的信息,保存到文件里,不用多说了,我用的是c#的File类AppendAllText方法,这个方法简单,同时将系统的聊天计数器加1。
通过脚本做个定时器settimeout 递归调用本身1秒钟取服务器信息,当发生差异时获取服务器聊天信息。
重要的部分都在js里,用prototype={}方式扩展Talk,ajax调用引用的是jquery框架。
js部分
Talk = function ()
{
}
Talk.prototype =
{
AjaxPagePath: "AjaxHandler.ashx",
ShowDivID: "divTalkList",
CrrentCount: ,
UserName:null,
//最加聊天信息
AppendTalk: function (divid, meg)
{
document.getElementById(divid).innerHTML += meg;
},
//获取服务器信息
GetTalk: function (talk)
{
if (talk == undefined)
{
talk = this;
}
$.ajax({
type: "POST",
url: talk.AjaxPagePath,
data: { "op": "GetTalk", "Count": talk.CrrentCount, "Date": new Date() },
//提交服务器时,提交的信息要不同不然ajaxserver接受不到,所以用了时间作为入参。
success: function (m)
{
var ms = m.split('@');
talk.AppendTalk(talk.ShowDivID, ms[]);
talk.CrrentCount = ms[];
}
});
},
///刷新方法
RefreshTalk: function ()
{
var t = this;
$.ajax({
type: "POST",
url: t.AjaxPagePath,
data: { "op": "RefreshTalk", "Count": t.CrrentCount, "Date": new Date() },
success: function (m)
{
if (m == "")
{
t.GetTalk(t); }
}
});
setTimeout(function ()
{
t.RefreshTalk();
}, );
},
//提交信息
SubmitTalk: function ()
{
var meg = $("#txtInput").val();
var t = this;
$.ajax({
type: "POST",
url: t.AjaxPagePath,
data: { "op": "Talk", "Talk": meg, "UserName": t.UserName, "Date": new Date() },
success: function ()
{
t.GetTalk(t);
}
});
}
}
aspx部分
调用Js

<script src="Script/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="Script/talk.js" type="text/javascript"></script>
<script type="text/javascript">
var cTalk = new Talk();
cTalk.CrrentCount = 0;
cTalk.RefreshTalk();//定时查看是否有新纪录
cTalk.UserName = "client";
</script>

<div id="divTalkList" style="width:80%; height:40%; border:1px solid #000000; overflow:scroll"></div>
<div><input type="text" id="txtInput" /><input type="button" value="Submit" onclick="cTalk.SubmitTalk();" />
<input id="btnRefresh" type="button" value="刷新" onclick="cTalk.RefreshTalk()" /><!--手动刷新测试用--></div>
ajaxserver 部分

public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
//聊天记录文件
string talkPath = @"/TextFile.txt";
string op = context.Request["op"];
//网站运行的物理路径
String rootPath =context.Server.MapPath("~");
string path1 =rootPath+ talkPath;
if (op == "Talk")
{
string talk =
context.Request["UserName"]+":" //用户名
+ context.Request["Talk"] //提交的聊天信息
+System.Environment.NewLine; //新行就是\n\r
//这个地方要用到单例模式就好了,保证服务器聊天数量唯一
count++;
File.AppendAllText(path1, talk, System.Text.Encoding.UTF8);
}
if (op == "RefreshTalk")
{
//客户端传过来的聊天数量与服务器上的聊天数量对比 if (int.Parse(context.Request["Count"]) < count)
{
context.Response.Write("");
}
else
{
context.Response.Write("");
}
}
//获取服务器上的聊天信息和聊天纪录数
if (op=="GetTalk")
{
string takl = GetTalk(path1, int.Parse(context.Request["Count"]));
context.Response.Write(count+"@"+takl);
}
}
///获取聊天信息和信息记录数 当小于服务器端的信息个数,则获取缺少的部分
///path1 聊天信息路径
///currentCount 是客服端有的信息记录
string GetTalk(string path1, int currentCount)
{
string[] lastMegs = File.ReadAllLines(path1, System.Text.Encoding.UTF8);
count = lastMegs.Length;
string lastMeg = string.Empty;
if (currentCount < count)
{
for (; currentCount < count; )
{
//拼接字符串
lastMeg += lastMegs[currentCount] + "<br/>";
currentCount++;
}
return lastMeg;
}
return null;
}
public bool IsReusable {
get {
return false;
}
}
}
Ajax B/S 聊天工具txt文件保存的更多相关文章
- txt文件保存问题
今天终于解决了文件的保存问题,之前删除文件,再保存,发现删除的内容还是在文件中. 这是因为保存内容时,是将数组内容一行一行覆盖原来的内容,没有覆盖到的还是保存在文件内. 我用的是CFile类 所以直接 ...
- 【C++】计算所有小于N的勾股数组合,可以写入txt文件保存,每组占一行。
#ifndef PYTHAGOREAN_H_ #define PYTHAGOREAN_H_ #include <iostream> class Pythagorean { public: ...
- 如何比较两个txt文件内容的细微差别
如何比较两个txt文件内容的细微差别 https://jingyan.baidu.com/article/19020a0a1dd04a529c284272.html 听语音 | 浏览:3500 | 更 ...
- 如何实现用将富文本编辑器内容保存为txt文件并展示
1.实现思路 创建一个xx.txt文件,存放于项目路径下 用文件流去读取文件内容并将读取的内容存放到页面的富文本编辑器框内 富文本编辑框内容改变后,保存时用文件流的方式保存到xx.txt文件中 提示: ...
- 【批处理】TXT文件批量转HTML文件工具
说到批量转html文件,相信喜欢看小说或经常制作电子书和教程的朋友应该很熟悉.因为,我们每次都会面临成千上万的txt文件,要将其转换为能正确显示的html文件是很麻烦的.当然,现在有很多的软件也可以实 ...
- 文章要保存为TXT文件,其中的图片要怎么办?Python帮你解决
前言 用 python 爬取你喜欢的 CSDN 的原创文章,保存为TXT文件,不仅查看不方便,而且还无法保存文章中的代码和图片. 今天教你制作成 PDF 慢慢看.万一作者的突然把号给删了,也会保存备份 ...
- ASP.NET 保存txt文件
public void ProcessRequest(HttpContext context) { context.Response.Clear(); context.Response.Buffer ...
- (qsf文件 、 tcl文件 和 csv(txt)文件的区别) FPGA管脚分配文件保存、导入导出方法
FPGA管脚分配文件保存方法 使用别人的工程时,有时找不到他的管脚文件,但可以把他已经绑定好的管脚保存下来,输出到文件里. 方法一: 查看引脚绑定情况,quartus -> assignment ...
- txt文件按行处理工具类(可以截取小说、分析日志等)【我】
txt文件按行处理工具类(可以分析日志.截取小说等) package file; import java.io.BufferedReader; import java.io.BufferedWrite ...
随机推荐
- Unity3D之Mecanim动画系统学习笔记(五):Animator Controller
简介 Animator Controller在Unity中是作为一种单独的配置文件存在的文件类型,其后缀为controller,Animator Controller包含了以下几种功能: 可以对多个动 ...
- 初识FreeMarker
一.什么是FreeMarker? FreeMarker基于设计者和程序员是具有不同专业技能的不同个体的观念 他们是分工劳动的:设计者专注于表示——创建HTML文件.图片.Web页面的其它可视化方面: ...
- Python3爬取中文网址
本以为Python3的中文兼容性无比友好,结果还是会有一点问题的. 解决方案如下,就以爬取我自己的一个网页极简翻译为例 #coding:utf8 import urllib.request impor ...
- 配置Windows Update,补丁更新
配置Windows Update更新下载及安装方式: #NotificationLevel说明: # 0:未配置,不会对当前设置进行更改 # 1:从不检查更新 # 2:检查更新,但是让我选择是否下载和 ...
- Windows下载Android源代码
下载msysgit,安装 官方下载:http://code.google.com/p/msysgit/downloads/list, 打开Git Bash,运行命令 cd D: git clone h ...
- android应用程序监听SMS Intent广播
当设备接收到一条新的SMS消息时,就会广播一个包含了android.provider.Telephony.SMS_RECEIVED动作的Intent. 对于应用程序监听SMS Intent广播,首先需 ...
- asp.net mvc控制器动作体返回ImageResult,可作验证码
public ActionResult Img() { // 获取博客园空间顶部的banner图片 WebRequest req = WebRequest.Create("http://sp ...
- 【每日一摩斯】-Index Skip Scan Feature (212391.1)
INDEX Skip Scan,也就是索引快速扫描,一般是指谓词中不带复合索引第一列,但扫描索引块要快于扫描表的数据块,此时CBO会选择INDEX SS的方式. 官方讲的,这个概念也好理解,如果将复合 ...
- 通过缓存数据库结果提高PHP性能(转)
众所周知,缓存数据库查询的结果可以显著缩短脚本执行时间,并最大限度地减少数据库服务器上的负载.如果要处理的数据基本上是静态的,则该技术将非常有效.这是因为对远程数据库的许多数据请求最终可以从本地缓存得 ...
- oracle时间格式转换问题 ORA-01810: format code appears twice--转
今天在做报表查询的时候Oracle报错: 信息为 ORA-01810: format code appears twice 原因:由于想java一样转化时间格式,但是Oracle中是不区分大小写的,所 ...