本文实例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); }) } 以上就是本文
的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 古典吉他《鲁特琴-BachInspirations巴赫灵感》ThibautGarcia[24Bit/96kHz]
- 刘纬武《睡眠音乐家 缓解疼痛 赫兹白噪音》[320K/MP3][217.2MB]
- 刘纬武《睡眠音乐家 缓解疼痛 赫兹白噪音》[FLAC/分轨][870.69MB]
- 群星1998 《宝丽金最佳电视主题曲》香港首版[WAV+CUE][1.2G]
- 群星1990《群星会·金曲重现》新加坡版[WAV+CUE][1.1G]
- 张惠妹2003《勇敢》[WAV+CUE][1.1G]
- 群星1995《摇滚中国乐势力》首版引进版[WAV+CUE][983M]
- 陈思安《32首酒廊情调》2CD新雅(国际)影碟[WAV+CUE]
- 齐豫潘越云《回声》K2HD[正版原抓WAV+CUE]
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]