WebSocket+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);
    })
}

时间: 2024-10-07 21:51:40

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

面向Web Cloud的HTML5 App开发实战:Browser&amp;HTML5&amp;CSS3&amp;PhoneGap&amp;jQuery Mobile&amp; WebSocket&amp;Node.js(2天)

如何理解Android架构设计的初心并开发出搭载Android系统并且具备深度定制和软硬整合能力特色产品,是本课程解决的问题. 课程以Android的五大核心:HAL.Binder.Native Service.Android Service(并以AMS和WMS为例).View System为主轴,一次性彻底掌握Android的精髓. 之所以是开发Android产品的必修课,缘起于: 1,     HAL是Android Framework&Application与底层硬件整合的关键技术和必修技

node.js 创建第一个web应用

安装node.js   从http://nodejs.org/ 下载安装程序进行安装. 安装后从开始菜单启动: Node.js command prompt 安装web开发框架Express 如果需要代理访问网络,先用下面的命令设置代理: > npm config set proxy=http://192.168.1.1:8080 运行下面命令进行安装express: > npm install express 执行下面命令,安装可执行程序: > npm install -g [emai

Node.js 创建HTTP服务器(经过测试,这篇文章是靠谱的T_T)

Node.js 创建HTTP服务器 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi. 从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需 要 PHP 来处理. 不过对 Node.js 来说,概念完全不一样了.使用 Node.js 时,我们不仅仅 在实现一个应用,同时还实现了整个 HTTP 服务器.事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的.

2:Node.js 创建HTTP服务器

原文出自:http://www.w3cschool.cc/nodejs/nodejs-http-server.html ===================================================== Node.js 创建HTTP服务器 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi. 从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需 要

Node.js创建服务器和模拟客户端请求

1. 何为服务器 服务器是某种长期运行,等待请求资源的应用程序 2. 常见Web应用架构 3. 如何创建web服务器 Web服务器是使用HTTP协议,等待客户端连接后请求资源的驻守应用程序:HTTP协议是应用层的协议,在传输层依然是使用TCP或者UDP协议,一般来说是使用Socket来绑定TCP或者UDP,总的来说创建服务器就是创建一个Socket: 创建服务器的流程: (1)创建Socket (2)为Socket绑定参数 (3)Socket等候请求 (4)处理请求,返回资源 (5)关闭资源 4

node.js在windows下的学习笔记(5)---用NODE.JS创建服务器和客户端

//引入http模块 var http = require('http'); //调用http的createServer的方法,这个方法有一个回调函数,这个回调数 //的作用是没到那个有请求发送给服务器的时候,就执行这个回调函数 http.createServer(function (req, res) { //发送 res.end('Hello World\n'); }).listen(3000, "127.0.0.1");//端口和IP的绑定 console.log('Server

html5 websocket + node.js 实现网页聊天室

1 client:    socket.io server:   node.js +  express  + socket.io 一个简单的聊天室  demo,没有注册,内置了一些测试用户 2 client 关键代码 var socket = io.connect('http://localhost:8080'); socket.on('connect',function(){ console.log('connected to server'); socket.on('login succes

node.js 创建HTTP服务器

这个才是我们学node.js的真正原因,服务器! 1.新建一个 index.js 写下 var myhttp=require('http'); myhttp.createServer(function(req,res){ res.writeHead(200,{'Content-Type':''text/thml''}); res.write('<h1>my http</h1>'); res.write('<p>he he</p>'); res.end(<

[转]用Node.js创建自签名的HTTPS服务器

用Node.js创建自签名的HTTPS服务器 创建自己的CA机构 创建服务器端证书 创建客户端证书 将证书打包 创建自己的CA机构 为CA生成私钥 openssl genrsa -out ca-key.pem -des 1024 通过CA私钥生成CSR openssl req -new -key ca-key.pem -out ca-csr.pem 通过CSR文件和私钥生成CA证书 openssl x509 -req -in ca-csr.pem -signkey ca-key.pem -out