由于公司需要开发web即时聊天的功能,开始时我们主要的实施方法是用jquery的ajax定时(10秒)轮询向服务器请求,由于是轮询请求,对 服务器的压力比较大。我们网站上线的时间不长,访问量不是很大,但就是在这样的情况下,服务器日志显示每天轮询的请求大约在7000条左右,所以公司决定 放弃ajax轮询请求的方式,改用Nodejs.

Nodejs现在炒得很火,但是国内真正用其做项目的公司还是很少,网上大部分是一些简单 的基础例子,找些相关资料比较困难,遇到问题也是没个头绪,不得不去国外的一些网站找资料、找问题的答案,主要去的还是github和 stackoverflow。nodejs是基于事件驱动的,单线程高效率的完美体现,用的nodejs给我最大的感觉就是要用到各种回调,请求函数不出 意外都要加上回调函数,经过了半个多月的研究和摸索,web即时聊天的基本功能已经实现了,当然还有很多未知的问题,需要在运行中逐渐升级和完善,感兴趣 的朋友可以去glojobs.com注册个账户体验一下。

我分享一下具体的实施方法吧。

服务器端:
需要架设Nodejs、安装Express框架、Mysql模块、Socket.io模块以及Forever模块,这些模块安装起来都比较简单,直接用npm install 安装即可。

客户端:
主要用的了js的jquery框架

核心片段:

1 需要调用服务端的socket

<<span>script src="socket.io/socket.io.js"></<span>script>

2 socket链接片段   socket = io.connect("url",{"connect_timeout":120000});

3 socket.on('online',function(user){}); 事假注册
   socket.emit('online', uname);  向请求服务端发出请求

4 连接mysql数据库
var mysql      = require('mysql');
var db = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : '111',
    database : 'dbname',
    charset : 'UTF8_GENERAL_CI',
});
连接数据库需要处理一个问题就是,mysql连接超时的问题,这个写个定时重连的程序给予解决,如下:
var reconnect= function(err) {
    console.log(err.code,'Trying to connect in 5 secs'+new Date());
    setTimeout(function (){
        db = mysql.createConnection(db.config);
        db.on('error',reconnect);
        db.connect();
    },5000);
};
db.on('error',reconnect);

5 其余的就是逻辑处理了,export各种方法,用emit各种去调用。

web即时聊天工具我们会继续完善和添加新功能,有兴趣的朋友可以一起探讨,qq:359513995

------------------------------------
千万不要忽略基础知识,以下HTML和HTML5 测试低于90分的同学都需要回炉学习:
HTML测试:http://www.w3xuexi.com/quiztest/index?qtest=HTML
HTML5测试:http://www.w3xuexi.com/quiztest/index?qtest=HTML5

转载于:https://www.cnblogs.com/goodbeypeterpan/p/4221254.html

基于Nodejs开发的web即时聊天工具相关推荐

  1. 嵌入式开发38,39,40天(项目3:基于A8开发板的局域网聊天工具)

    开篇前言: 其实想了很久要不要写这个项目出来,毕竟这个项目用到的特殊库相对比较多,这也是网上那么少嵌入式项目开发的视频一样,在嵌入式的世界里,就是为了开发某个项目而裁剪硬件,裁剪系统,把不需要的全部抛 ...

  2. ios开发xmpp仿微信即时聊天工具

    最近在做一个项目,需要一个即时聊天工具,先打算有第三方环信(http://www.easemob.com),但是最终老板不允许,要自己开发用自己的服务器,哎!如果有需要的可以去看看这个环信,真的不错. ...

  3. Android 开发即时聊天工具 YQ :(四) 获取好友列表

    在Android 开发即时聊天工具 YQ :(三) 实现登陆功能中已经实现了登陆功能,离能聊天又近了一步了 :) 在实现聊天之前还有一个重要的东西,?没错,就是好友列表,没的好友你和谁聊呀,是吧, 嘿 ...

  4. 跨跃平台交流无极限——linux下如何使用即时聊天工具,跨跃平台 交流无极限——Linux下如何使用即时聊天工具(一)...

    I技应 术用与 跨跃平台交流无极限 维普资讯 http://doc.xuehai.net o n I s o f i e n t@ c n i i c o m t . L n x下如何使用即时聊天工具 ...

  5. 使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM(转)

    使用PHP+Swoole实现的网页即时聊天工具 全异步非阻塞Server,可以同时支持数百万TCP连接在线同时支持websocket+comet2种兼容协议,可用于所有种类的浏览器包括IE拥有完整的U ...

  6. 局域网即时聊天工具都有哪些?

    在互联网普及的今天,使用即时聊天工具沟通交流在人们的日常生活和工作当中已经十分普及.但由于企业内部敏感信息通过互联网泄露的现象频发,不少企业出于安全性考虑只能转用局域网环境办公,在转用局域网环境办公后 ...

  7. 即时聊天工具混战中国

    近闻微软MSN已经正式结盟中国内移动IM(移动即时通信)工具的领先企业PICA(皮咔),双方将在移动IM的技术研发和市场等领域展开深度合作.和我早期的一段时间分析的中国移动的飞信境况一样,即时聊天工具 ...

  8. 一个基于C#开发的Excel转Json工具

    Json在程序开发中是非常常用的数据格式,对于程序员来说,阅读和编辑Json都没有什么问题,但其他人就不是那么方便了.比如配置游戏数据:游戏角色.技能.道具的名称,策划书往往都是通过Excel配置,这 ...

  9. android 高并发服务端,GitHub - android-coco/chat: 支持10万人同时在线 Go语言打造高并发web即时聊天(IM)应用...

    IM 支持10万人同时在线 Go语言打造高并发web即时聊天(IM)应用 部署前准备 配置文件 config/config.yml 样例: # 服务端监听配置 service: port: :8181 ...

最新文章

  1. React学习笔记6:React Hooks API总结
  2. 对话嬴彻科技CEO马喆人:L3才是自动驾驶货运的本质拐点
  3. 我在这里,等你的故事【小废回家看看】
  4. tasklist命令参数应用详细图解
  5. 扩展方法IEnumerableT转换为IListSelectListItem ,提供@Html.DropDownList使用
  6. .NET Framework总结二
  7. django 套vue 模板_Vue admin template + Django 快速进行Web开发
  8. 基于Java+SpringBoot+vue+node.js实现自行车租赁平台管理系统
  9. 作者:汪疆平(1970-),男,北明软件有限公司技术研究院高级工程师、副院长。...
  10. android自定义textview销毁,Android自定义View去除TextView的Padding值
  11. centos8 ssh配置_JumpServer 堡垒机CentOS 8 安装部署(四)
  12. python爬虫之requests模块2
  13. 【python】为本地乌云漏洞库/知识库生成目录
  14. Network | parity bit
  15. 有关Unity编辑器
  16. kindle索引_Kindle太费电?卡索引解决办法
  17. 三维点云处理技术二:三维点云表征概述
  18. python统计闰年的个数_python 闰年数
  19. python四分位数_四分位数计算以及使用pandas计算
  20. 淘宝评论数据抓取简记

热门文章

  1. Linux设备驱动开发详解【五】_Linux文件系统和设备文件系统
  2. 十六进制“\u”开头字符串的转码
  3. 韵达详细物流用这个工具能批量查询
  4. QoS和QoE初学者指南
  5. STM32利用STM32CubeMX驱动SDRAM
  6. Java基础知识总结归纳
  7. HUAWEI HiAI亮相华为开发者生态大会 助力应用AI开发实现加速度
  8. 作为项目管理者如何避免项目的延期与执行过程中的加班问题
  9. uva 796 - Critical Links
  10. OkHttp的初次使用