最近研究聊天室功能,准备用nodejs实现。下面是自己的尝试!!

  • nodejs的安装这里就不详细赘述了。

程序创建

  • 引入required模块
var express = require('express');
var app = express();
var http = require('http').Server(app);
  • 创建监听端口
http.listen(8000, function() {
console.log('Server running at http://127.0.0.1:8000/');
});
  • 以上代码我们完成了一个可以工作的 HTTP 服务器。使用 node 命令执行以上的代码:(*就是我们上面代码保存的文件名)
node ****.js

express模块

var express = require('express');
var app = express();
var http = require('http').Server(app);
http.listen(8000, function() {
console.log('Server running at http://127.0.0.1:8000/');
});
  • 这样我们的8000端口就开启这个服务了。下面我们通过socket.io模块实现服务于客户端的交互。

socket.io模块

  • 首先io.sockets.on函数接受字符串”connection”作为客户端发起连接的事件,当连接成功后,调用带有socket参数的回调函数。我们在使用socket.IO的时候,基本上都在这个回调函数里面处理用户的请求。
  • socket中最重要的两个方法是emit和on方法。

    说白了就是发送和接收的方法。在服务端socket.emit就是想客户端发送数据,socket.on就是接收客户端返回的数据。在客户端恰恰相反。
io.on('connection', function(socket) {}
  • connect作为客户端发起连接的事件。当连接成功后开始调用带有socket的回调函数。
this.socket = io.connect('ws://127.0.0.1:8000');
this.socket.emit('login', {
userid: this.userid,
username: this.username,
userpwd: this.userpwd
});
  • 客户端对应的就发起这个连接请求。发起连接后客户端向服务端发起一个事件login,并且携带参数对象(userid,username,userpwd)。下面我们看看服务端接收这个事件login
socket.on('login', function(obj) {
//obj这个对象就是客户端传递过来的,obj.userid,obj.username,obj.userpwd
//我们就可以通过obj这个对象处理相应的登录逻辑处理
}
  • nodejs主要通过socket来实现服务端和客户端的通信

其他API

  • 向所有客户端广播:socket.broadcast.emit(‘broadcast message’);

我们可以通过他实现群内公告等功能。

  • 进入一个房间(非常好用!相当于一个命名空间,可以对一个特定的房间广播而不影响在其他房间或不在房间的客户端):socket.join(‘your room name’);

  • 向一个房间广播消息(发送者收不到消息):socket.broadcast.to(‘your room name’).emit(‘broadcast room message’);

  • 向一个房间广播消息(包括发送者都能收到消息)(这个API属于io.sockets):io.sockets.in(‘another room name’).emit(‘broadcast room message’);

  • 强制使用WebSocket通信:(客户端)socket.send(‘hi’),(服务器)用socket.on(‘message’, function(data){})来接收。

NodeJs小试牛刀--聊天室搭建的更多相关文章

  1. NodeJS在线聊天室(NodeJS & SocketIO & Express & EJS & MongoDB & Gulp)

    项目背景 这个项目主要是为了玩玩NodeJS,项目的方向大概是做出类似QQ的在线聊天系统.想要在线体验可以点击在线演示. 项目使用PM2进行部署和管理,功能在不断的迭代开发中.如果你觉得这个项目比较有 ...

  2. node多人聊天室搭建

    1.采用websocket: 为什么不用ajax的http:在用HTTP发送消息时,必须用一个新的TCP/IP连接.打开和关闭连接需要时间.此 外,因为每次请求都要发送HTTP头,所以传输的数据量也比 ...

  3. 图形验证插件,百度编辑器拓展功能,NodeJs消息机制以及聊天室

    图形验证插件 网上找了很多图形验证插件,比较推荐verify.js <link rel="stylesheet" type="text/css" href ...

  4. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(二) 实现聊天室连接

    上一篇已经简单介绍了layim WebUI即时通讯组件和获取数据的后台方法.现在要讨论的是SingalR的内容,之前都是直接贴代码.那么在贴代码之前先分析一下业务模型,顺便简单讲一下SingalR里的 ...

  5. 使用nodejs+express+socketio+mysql搭建聊天室

    使用nodejs+express+socketio+mysql搭建聊天室 nodejs相关的资料已经很多了,我也是学习中吧,于是把socket的教程看了下,学着做了个聊天室,然后加入简单的操作mysq ...

  6. nodejs+mongoose+websocket搭建xxx聊天室

    简介 本文是由nodejs+mongoose+websocket打造的一个即时聊天系统:本来打算开发一个类似于网页QQ类似功能的聊天系统,但是目前只是开发了一个模块功能 --- 类似群聊的,即一对多的 ...

  7. 使用Angular和Nodejs搭建聊天室

    一,利用Node搭建静态服务器 这个是这个项目的底层支撑部分.用来支持静态资源文件像html, css, gif, jpg, png, javascript, json, plain text等等静态 ...

  8. 原生NodeJs制作一个简易聊天室

    准备工作 安装NodeJs环境 安装编译器Sublime 如果网速不理想,可以百度一下如何加快npm的速度~ 使用node搭建一个简单的网站后台 做完准备工作之后,新建文件夹chatroom,在cha ...

  9. 玩转Node.js(四)-搭建简单的聊天室

    玩转Node.js(四)-搭建简单的聊天室 Nodejs好久没有跟进了,最近想用它搞一个聊天室,然后便偶遇了socket.io这个东东,说是可以用它来简单的实现实时双向的基于事件的通讯机制.我便看了一 ...

随机推荐

  1. curl请求的get.post.put.delete对接其他系统接口方法

    class HttpCurl{ //控客云平台的appid private $appId = xxxxxx; //控客云平台的appkey private $appKey = 'xxxxxxxxxxx ...

  2. C++模版的用法

    模板是实现代码重用机制的一种工具,实质就是实现类型参数化,即把类型定义为参数. C++提供两种模板:函数模板,类模板 函数模板 template <typename T> T myMax( ...

  3. 使用开源框架Sqlsugar结合mysql开发一个小demo

    一.Sqlsugar简介 1.性能上有很大优势 sqlsugar是性能最好的ORM之一,具有超越Dapper的性能 ,走的是EMIT够构中间语言动态编译到程序集,完成高性能的实体绑定,达到原生水平. ...

  4. c++学习书籍推荐《The C++ Programming Language第四版》下载

    百度云及其他网盘下载地址:点我 作者简介 Bjarne Stroustrup is the designer and original implementer of C++, the author o ...

  5. WebApi 通过拦截器设置特定的返回格式

    public class ActionFilter : ActionFilterAttribute { /// <summary> /// Action执行之后由MVC框架调用 /// & ...

  6. Python一秒提供Rest接口

    Python一秒提供Rest接口 使用的是Anaconda安装的Python环境; 新建py文件(例如:restapi.py) # -*- coding: utf-8 -*- from flask i ...

  7. Spring Boot 邮件发送的 5 种姿势!

    邮件发送其实是一个非常常见的需求,用户注册,找回密码等地方,都会用到,使用 JavaSE 代码发送邮件,步骤还是挺繁琐的,Spring Boot 中对于邮件发送,提供了相关的自动化配置类,使得邮件发送 ...

  8. Java EE核心框架实战(1)

    内容前言:本书适合具有一定Java编程基础的读者阅读,增强其项目实战能力. 2014年9月第1版 下载本书所有源代码可通过  http://pan.baidu.com/s/1i3sshXr 本书配套的 ...

  9. JQuery学习笔记(3)——节点操作 节点查找

    插入节点 内部插入 所谓的内部插入,就是指在节点里面的插入,而外部插入,则是在节点外面插入. append() prepend() appendTo() prependTo() append和prep ...

  10. 【动态规划法(DP)】-C++

    360百科定义: 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法.20世纪50年代初美国数学家R.E.Bell ...