基于Node.js + Web Socket 简易聊天室

本文案例环境为mac系统,你需要先安装nodejs,方法比较简单,直接去nodejs官网下载即可。

环境:

mime

首先通过npm进行安装

  • 在我们的项目文件夹下打开命令行(tip: 按住Shift同时右击,可以在右键菜单中找到‘从此处打开命令行‘选项)
  • 在命令行中输入 npm install mime --save 回车进行安装
  • 然后在chat.js中通过require(‘mime‘)将其引入到项目中进行使用

mime是node.js中管理路由响应请求的模块,根据请求的URL返回相应的HTML页面

socket.io

Node.js中使用socket的一个包。使用它可以很方便地建立服务器到客户端的sockets连接,发送事件与接收特定事件。

同样通过npm进行安装 npm install socket.io --save 。安装后在node_modules文件夹下新生成了一个socket.io文件夹,其中我们可以找到一个socket.io.js文件。将它引入到HTML页面,这样我们就可以在前端使用socket.io与服务器进行通信了。

注:在浏览器中用本地localhost打开

以下是代码,主要是htlm部分  css部分  js部分

html文档以及处理客户端部分js

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>h9聊天室-beta版</title>    <link rel="stylesheet" href="../css/index.css"></head><body>    <div class="chat">        <h2>欢迎来到h5大世界  当前在线人数<span>0</span></h2>        <ul>

</ul>    </div><form>    <input type="text" class="message">    <input type="button" value="发送" class="btn"/></form>

</body><script src="../socket.io/socket.io.js"></script><script>    var socket=io(‘http://10.80.16.238:3000‘);    var span=document.querySelector(‘span‘);    var btn=document.querySelector(‘.btn‘);    var list=document.querySelector(‘ul‘);    var info=document.querySelector(‘.message‘);    btn.onclick=function(ev){        ev.preventDefault();        var message=info.value;        socket.emit(‘message‘,{info:message});    }    socket.on(‘news‘,function(data){        var num=data.num;        var say=data.say;        var li=document.createElement(‘li‘);        li.innerHTML=say;        list.appendChild(li);        span.innerHTML=num;    })</script></html>

CSS部分:
body{    margin: 0 auto;    background-color:lightgray;}.chat{    width:800px;    min-height:400px;    background-color:lightblue;    margin: 0 auto;}

.chat h2{    height:40px;    line-height: 40px;    background-color:gold;    font-size: 20px;    text-align: center;}ul{    list-style-type:none;    margin: 0;    padding: 0;}li{    height:30px;    line-height: 30px;    font-size: 20px;}form{    width:800px;    margin:50px auto;}.message{    width:600px;    height:60px;    font-size:20px;}.btn{    width:100px;    height:30px;    background-color: aqua;    font-size:20px;}

服务端js:  chat.js文件
var http=require(‘http‘);//创建服务器var server=http.createServer(handle);var fs=require(‘fs‘);

var mime=require(‘mime‘);

//绑定服务器var io=require(‘socket.io‘)(server);

function handle(req,res){    console.log(req.url)    var filePath=‘‘;    if (req.url=="/"){        filePath="./html/index.html"    }else{        filePath="."+req.url    }    Static(res,filePath)}function Static(res,filePath){    fs.exists(filePath,function(exist){        if (exist){            fs.readFile(filePath,function(err,data){                if(err){                    send404(res)                }

res.writeHead(200,{                    ‘Content-Type‘:mime.lookup(filePath)                })                res.end(data)            })        }else{            send404(res)        }    })}server.listen(3000,function(){    console.log(‘go go go‘)});

function send404(res){    res.writeHead(404,{        ‘Content-Type‘:‘text/plain‘    })    res.end(‘404, sorry not found‘)}

//发送,接收信息var num=1;    io.on(‘connection‘,function(socket){        num++;    //    on 事件名,接受回调    //    服务端要和客户端一一对应        socket.on(‘message‘,function(data){            console.log(data.info);            //    emit 事件名,{发射主体}            io.sockets.emit(‘news‘,{name:‘wj‘,num:num,say:data.info});        })    })
时间: 2024-10-06 20:28:52

基于Node.js + Web Socket 简易聊天室的相关文章

基于C/S模式的简易聊天室

一.任务简要描述 移动互联网技术的广泛应用为人们提供了非常便捷的沟通方式.QQ.微信和微博等是便携式聊天系统的典型代表,它们的功能非常强大. 本系统利用TCP/IP协议的Socket和ServerSocket类,实现基于C/S模式的简易聊天室.该聊天室包括服务端和客户端两部分,服务端是客户端发送消息的中转站:客户端之间可以直接通信,也可以与服务器通信.聊天结束后客户端断开与服务端的连接,服务器也可以停止信息中转服务. 二.系统需求分析 本系统采用C/S软件架构,服务器端负责监听客户端发来的消息,

Node.js + Web Socket 打造即时聊天程序嗨聊

前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术.像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端.瞬间就有了一统天下的感觉,来往穿梭于前后端之间代码敲得飞起,从此由前端晋升为'前后端'. 图片来自G+ 本文将使用Node.js加web socket协议打造一个网页即时聊天程序,取名为HiChat,中文翻过来就是'嗨聊',听中文名有点像是专为寂寞单身男女打造的~ 其中将会使用到express和socket.io两个包模块,下面会有介绍

基于Node.js的socket.io机制的陷阱,仅针对于客户端继承socket.io的问题的解决方案

Socket.IO enables real-time bidirectional event-based communication.It works on every platform, browser or device, focusing equally on reliability and speed. 众所周时  Socket.IO 确实是一套不错的即时数据传输的解决方案,由于其存在的良好的向下兼容性 (web socket Comet  xhr)使得其在任何平台上不存在任何的差异性

使用node.js实现多人聊天室(socket.io、B/S)

通过B/S架构实现多人聊天,客户端连接服务器,发送信息,服务器接收信息之后返回给客户端. 主要是通过socket.io实现浏览器和服务器之间进行实时,双向和基于事件的通信. socket.io官方文档:https://socket.io/docs/ 新建一个文件夹作为项目文件夹 新建一个js文件作为服务器,新建一个HTML文件作为客户端. 建立服务器,使用http模块的createSrever快速创建一个服务,监听端口为3000: 1 let http = require("http"

搭建Websocket简易聊天室

本文,我们通过Egret和Node.js实现一个在线聊天室的demo.主要包括:聊天,改用户名,查看其他用户在线状态的功能.大致流程为,用户访问网页,即进入聊天状态,成为新游客,通过底部的输入框,可以输入自己想说的话,点击发布,信息呈现给所有在聊天的人的页面.用户可以实时修改自己的昵称,用户离线上线都会实时广播给其他用户. 体验链接 http://7hds.com:8888/ 下图为最终制作完成的聊天面板 WebSocket服务器可以用其他语言编写,本文采用的方法建立在Node.js上 . 在N

《基于Node.js实现简易聊天室系列之引言》

简述:这个聊天室是基于Node.js实现的,完成了基本的实时通信功能.在此之前,对node.js和mongodb一无所知,但是通过翻阅博客,自己动手基本达到了预期的效果.技术,不应该是闭门造车,而是学会分享总结才能进步.因此,我想记录下我的学习心得.不喜勿喷. 技术选型: 数据库:mongodb 实时通信:socket.io 服务器:node.js 后台:node.js 前端js库:jquery 数据库之所以选择mongodb,是因为mongodb是介于关系型与非关系型之间的一款产品,存储格式为

《基于Node.js实现简易聊天室系列之详细设计》

一个完整的项目基本分为三个部分:前端.后台和数据库.依照软件工程的理论知识,应该依次按照以下几个步骤:需求分析.概要设计.详细设计.编码.测试等.由于缺乏相关知识的储备,导致这个Demo系列的文章层次不是很清楚,索性这一章将所有的过程(前后端以及数据库)做一个介绍,下一章写完总结就OK了吧. (1)前端部分 涉及到的技术:html.css.bootstrap.jquery.jquery UI 登录/注册界面使用的是bootstrap响应式布局,即支持不同尺寸的客户端,以此提高用户的体验.在这之前

基于Node.js + socket.io实现WebSocket的聊天DEMO

原文摘自我的前端博客,欢迎大家来访问 http://hacke2.github.io 简介 最近看Node.js和HTML5,练手了一个简易版的聊天DEMO,娱乐一下 为什么需要socket.io? node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一, 为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验, 于是socket.io诞生. 简答来说socket.io具体以下特点: 1.socket.io设计的目标是支持任何的浏览器

使用node.js和socket.io实现多人聊天室

刚学node.js,想着做点东西练练手.网上的东西多而杂,走了不少弯路,花了一天时间在调代码上.参考网上的一篇文章,重写了部分代码,原来的是基于基于node-websocket-server框架的,我没用框架,单单是socket.io. 一.基本功能 1.用户随意输入一个昵称即可登录2.登录成功后1) 对正在登录用户来说,罗列所有在线用户列表,罗列最近的历史聊天记录2) 对已登录的用户来说,通知有新用户进入房间,更新在线用户列表3.退出登录1)支持直接退出2) 当有用户退出,其他所有在线用户会收