写点什么

NodeJs 小试牛刀 -- 聊天室搭建

作者:zxhtom
  • 2022 年 9 月 01 日
    江苏
  • 本文字数:1127 字

    阅读完需:约 4 分钟

  • 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){})来接收。

发布于: 刚刚阅读数: 6
用户头像

zxhtom

关注

还未添加个人签名 2019.08.19 加入

还未添加个人简介

评论

发布
暂无评论
NodeJs小试牛刀--聊天室搭建_9月月更_zxhtom_InfoQ写作社区