搜索

首页  >  问答  >  正文

javascript - 问一个在web页面做一个即时通讯功能的问题??

问题:就是在网站的首页做一个类似于QQ聊天界面的功能,不用很复杂,只要显示用户头像和发送的内容就行,也不用做聊天的记录。只要实时显示最新的20条记录即可?

个人思路:由于功能比较单一,不是很复杂,而且显示的内容只需要最新的20条,所以我打算用,AJAX轮询的方法去做,当用户输入聊天记录后,把记录存入数据库(AJAX轮询实时读取数据库数据),然后获取数据后,显示在页面上。请问这么做可以吗?这样做,多个人聊天时会不会出现什么问题呢?比如数据显示在页面上时会很慢什么的?

websoket可以用来做这个,但是没用过,也不知道可不可以在windows服务器上使用(项目部署在windows上的)。

问题来了:请问各位有没有什么好的简单的方法呢?给点意见呗!!!!

typechotypecho2697 天前681

全部回复(2)我来回复

  • 为情所困

    为情所困2017-06-28 09:24:36

    websocket或者socket.io就可以实现了, 这个和操作平台关系不是很大, 和你实现的web服务程序关系比较大, 因为你得选择一个一个web程序支持websocket或者socket.io. 我之前用node.js`实现过, 也是参考网上的例子, 你也可以参考下
    Node.js + Web Socket 打造即时聊天程序嗨聊

    回复
    0
  • 高洛峰

    高洛峰2017-06-28 09:24:36

    AJAX轮询的话,多人聊天时候,每个终端都得不断去请求数据库数据,有以下几个缺点:

    1. 由于请求次数比较多,会增加服务器的压力。

    2. AJAX轮询本身比较慢

    3. 由于浏览器对于同一个域名下的AJAX请求数量有限制,所以数据交互的效率还是挺低的。

    如果用WebSocket的话,我建议用nodeJSws做一个广播服务,可以挂起在Windows后台,也可以随意移植,相当方便,用到的库是这个:https://www.npmjs.com/package/ws
    不得不说,NodeJS写的东西无论的可移植性、扩展性还是兼容性都是挺不错的。

    具体操作就不说了,可以参见ws包的broadcase example示例来写。

    回复
    0
  • 取消回复