栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

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

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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+="
  • 客户端已连接
  • "; } 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: 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); }) } 以上就是本文

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

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/95041.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号