zoukankan      html  css  js  c++  java
  • 基于Nodejs开发的web即时聊天工具

    由于公司需要开发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

  • 相关阅读:
    [python][django学习篇][9]设计正在博客视图(3)
    [python][django学习篇][8]django 视图(2) --简单模板
    [python][django学习篇][7]设计博客视图(1)
    [python][django学习篇][6]操作数据库
    [python][django学习篇][5]选择数据库版本(默认SQLite3) 与操作数据库
    [python][django学习篇][4]django完成数据库代码翻译:迁移数据库(migration)
    [python][django学习篇][3]创建django web的数据库模型
    [python][django学习篇][2]创建django app
    自动化监控利器-Zabbix深入配置和使用
    piwik安装部署最佳实践
  • 原文地址:https://www.cnblogs.com/goodbeypeterpan/p/4221254.html
Copyright © 2011-2022 走看看