玩法介绍当前位置:星鸿娱乐 > 玩法介绍 > >

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

  

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

  

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

  

1.使用nodejs-websocket  
  nodejs-websocket是基于node.js编写的一个后端实现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("");其中的参数传入格式为这就和http协议前缀一样。接下来就可以通过websocket内置的一些方法进行事件监听和数据展示。

  
  这里统一介绍各个监听事件:onopen当服务器和客户端建立起连接时触发;onmessage当客户端收到服务器发送的数据时触发; onclose当客户端和服务器的连接关闭时触发;onerror当连接出现错误时触发。

  
  

  

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

  
  
  oConnect.onclick=function(){  ws=new WebSocket('');  ws.onopen=function(){  oUl.innerHTML+="
  • 客户端已连接
  • ";  }  ws.onmessage=function(evt){  oUl.innerHTML+="
  • "+evt.data+"
  • ";  }  ws.onclose=function(){  oUl.innerHTML+="
  • 客户端已断开连接
  • ";  };  ws.onerror=function(evt){  oUl.innerHTML+="
  • "+evt.data+"
  • ";  };  };  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);  })  }  以上就是本文  
      
      

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

      
      

    (责任编辑:admin)

    上一篇:星鸿娱乐注册jquery原创弹出层折叠效果点击折叠

    下一篇:没有了

    推荐内容

    客户服务热线

    010-400-12345

    在线客服