WebSocket+node.js创建即时通信的Web聊天服务器

 更新时间:2016年08月08日 09:08:48   作者:fareise  
这篇文章主要为大家详细介绍了WebSocket+node.js创建即时通信的Web聊天服务器的相关资料,感兴趣的小伙伴们可以参考一下

本文实例node.js创建即时通信的Web聊天服务器,供大家参考,具体内容如下

1.使用nodejs-websocket
 nodejs-websocket是基于node.js编写的一个后端实现websocket协议的库,
 连接:https://github.com/sitegui/nodejs-websocket
 (1)安装
 在项目目录下通过npm安装:npm install nodejs-websocket
 (2)创建服务器

 //引入nodejs-websocket
var ws = require(“nodejs-websocket”);
//调用createServer方法创建服务器,回调函数中的conn是connection的实例
var server = ws.create(function(conn){
  console.log(“New connection”);
  //监听text事件,text事件每当从服务器收到文本类型数据时触发,回调函数的参数为传过来的字符串
  conn.on(“text”, function(str){
 console.log(“Received ” + str);
  });
  //监听close事件,每次断开连接时触发
  conn.on(“close”, function(code, reason){
 console.log(“Connection closed”);
  })
}).listen(8888);

 2.客户端使用websocket
 在客户端首先需要实例化一个websocket对象:ws = new WebSocket("ws://localhost:5000");其中的参数传入格式为ws://+url,这就和http协议前缀http://一样。接下来就可以通过websocket内置的一些方法进行事件监听和数据展示。
 这里统一介绍各个监听事件:onopen当服务器和客户端建立起连接时触发;onmessage当客户端收到服务器发送的数据时触发; onclose当客户端和服务器的连接关闭时触发;onerror当连接出现错误时触发。

3.使用websocket+nodejs实现在线聊天室
 (1)html和css代码省略
 (2)客户端js:    

oConnect.onclick=function(){
    ws=new WebSocket('ws://localhost:5000');
     ws.onopen=function(){
       oUl.innerHTML+="<li>客户端已连接</li>";
     }
    ws.onmessage=function(evt){
      oUl.innerHTML+="<li>"+evt.data+"</li>";
    }
    ws.onclose=function(){
      oUl.innerHTML+="<li>客户端已断开连接</li>";
    };
    ws.onerror=function(evt){
      oUl.innerHTML+="<li>"+evt.data+"</li>";
 
    };
  };
  oSend.onclick=function(){
    if(ws){
      ws.send(oInput.value);
    }
  }(3)服务器端js:
 /*
websocket支持两种类型的数据传输:text类型和binary类型,其中二进制数据是通过流的模式发送和读取的
*/
var app=require('http').createServer(handler); //为了简化代码,将服务器创建具体代码放到handler函数中
var ws=require('nodejs-websocket');
var fs=require('fs');
app.listen(8888);
function handler(req,res){
  //__dirname返回该文件所在的当前目录。调用readFile方法进行文件读取
  fs.readFile(__dirname+'/index.html',function(err,data){
    if(err){
      res.writeHead(500);
      return res.end('error ');
    }
    res.writeHead(200);
    res.end(data);
  });
}
//以上步骤成功在8888端口渲染出相应的html界面
//conn是对应的connection的实例
var server = ws.createServer(function(conn){
  console.log('new conneciton');
  //监听text事件,每当收到文本时触发
  conn.on("text",function(str){
    broadcast(server,str);
  });
  //当任何一端关闭连接时触发,这里就是在控制台输出connection closed
  conn.on("close",function(code,reason){
    console.log('connection closed');
  })
}).listen(5000);
//注意这里的listen监听是刚才开通的那个服务器的端口,客户端将消息发送到这里处理
 
function broadcast(server, msg) {
  //server.connections是一个数组,包含所有连接进来的客户端
  server.connections.forEach(function (conn) {
    //connection.sendText方法可以发送指定的内容到客户端,传入一个字符串
    //这里为遍历每一个客户端为其发送内容
    conn.sendText(msg);
  })
}

以上就是本文

的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Node.js的MongoDB驱动Mongoose基本使用教程

    Node.js的MongoDB驱动Mongoose基本使用教程

    这篇文章主要介绍了Node.js的MongoDB驱动Mongoose的基本使用教程,前端js+后端Node.js+数据库MongoDB是当下流行的JavaScript全栈开发方案,需要的朋友可以参考下
    2016-03-03
  • 简单了解小程序+node梳理登陆流程

    简单了解小程序+node梳理登陆流程

    这篇文章主要介绍了简单了解小程序+node梳理登陆流程,以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • node.js学习之交互式解释器REPL详解

    node.js学习之交互式解释器REPL详解

    Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。下面这篇文章我们就来详细的介绍下关于node.js交互式解释器REPL的内容,有需要的朋友们可以参考借鉴。
    2016-12-12
  • node.js中的buffer.toJSON方法使用说明

    node.js中的buffer.toJSON方法使用说明

    这篇文章主要介绍了node.js中的buffer.toJSON方法使用说明,本文介绍了buffer.toJSON的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • node搭建后台的实现步骤

    node搭建后台的实现步骤

    本文介绍了使用Node.js搭建后台的实现步骤,文章详细阐述了每个步骤的实现过程,并给出了示例代码,对于想要了解如何使用Node.js搭建后台的读者具有一定的参考价值
    2023-08-08
  • Nodejs如何进行性能监控和分析优化

    Nodejs如何进行性能监控和分析优化

    Node.js应用可能因为高并发、内存泄漏、CPU密集型任务等原因导致性能下降,影响用户体验甚至系统稳定性,通过性能监控和分析,我们可以及时发现潜在问题,并针对性地进行优化,确保系统正常运行且具备良好的性能表现
    2024-06-06
  • gulp解决跨域的配置文件问题

    gulp解决跨域的配置文件问题

    下面小编就为大家带来一篇gulp解决跨域的配置文件问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • node 解析图片二维码的内容代码实例

    node 解析图片二维码的内容代码实例

    这篇文章主要介绍了node 解析图片二维码的内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Node.js使用Streams来处理文件读写操作的示例代码

    Node.js使用Streams来处理文件读写操作的示例代码

    在Node.js中,Streams 提供了一种高效的方式来处理文件的读写操作,特别是对于大文件或数据流,Streams 允许你以流的方式读写数据,这意味着数据可以分块处理,本文介绍了在Node.js中如何使用Streams来处理文件读写操作,需要的朋友可以参考下
    2024-09-09
  • nodejs 搭建简易服务器的图文教程(推荐)

    nodejs 搭建简易服务器的图文教程(推荐)

    下面小编就为大家带来一篇nodejs 搭建简易服务器的图文教程(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07

最新评论