nodejs结合Socket.IO实现websocket即时通讯

下面是“nodejs结合Socket.IO实现websocket即时通讯”的完整攻略。

一、什么是WebSocket

WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。WebSocket协议在浏览器和服务器之间建立全双工通讯,使得浏览器可以实时向服务器推送数据。相比于传统的HTTP协议,WebSocket在实现实时通讯方面有很大的优势。

二、使用Socket.IO实现WebSocket通讯

Socket.IO是一种基于事件的实时双向通讯引擎,可以在浏览器和服务器间发送任何事件,包括附加数据。它是一个跨平台、跨浏览器的实时通讯协议,可以在node.js和浏览器之间建立稳定、实时、低延迟的通讯。

1. 安装Socket.IO

在node.js中,可以通过npm来安装Socket.IO,执行如下命令:

npm install socket.io

2. 创建WebSocket服务器

为了处理WebSocket请求,我们需要创建一个WebSocket服务器。只需要几行简单的代码就可以完成:

const app = require('http').createServer(handler);
const io = require('socket.io')(app);

app.listen(3000);

function handler(req, res) {
  res.writeHead(200);
  res.end("Welcome to my WebSocket server");
}

这段代码会创建一个HTTP服务器,然后通过socket.io将其升级为WebSocket服务器。handler函数用于处理请求,并返回欢迎信息。

3. 客户端连接WebSocket服务器

我们利用socket.io客户端库在浏览器中连接WebSocket服务器,代码如下:

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:3000');
  socket.on('connect', function(){
    console.log('连接成功');
  });
  socket.on('message', function(msg){
    console.log(msg);
  });
</script>

这段代码通过io.connect函数连接WebSocket服务器,并在连接建立和接收到消息时,输出相应的信息。

4. 服务器端发送消息到客户端

在服务器端,我们可以通过io对象,发送消息到客户端。代码如下:

setInterval(function(){
  io.emit('message', '这是一条广播消息');
}, 5000);

这段代码每隔5秒钟将一条广播消息发送到所有客户端。

示例一

下面是一个完整的实例,代码中包括了客户端和服务端的代码:

  • server.js
const app = require('http').createServer(handler);
const io = require('socket.io')(app);

app.listen(3000);

function handler(req, res) {
  res.writeHead(200);
  res.end("Welcome to my WebSocket server");
}

setInterval(function(){
  io.emit('message', '这是一条广播消息');
}, 5000);
  • client.html
<!DOCTYPE html>
<html>
<head>
  <script src="/socket.io/socket.io.js"></script>
</head>
<body>
  <script>
    var socket = io.connect('http://localhost:3000');
    socket.on('connect', function(){
      console.log('连接成功');
    });
    socket.on('message', function(msg){
      console.log(msg);
    });
  </script>
</body>
</html>

在命令行中执行node server.js命令启动WebSocket服务器,然后在浏览器中打开client.html页面,就可以看到客户端连接服务器并输出接收到的广播消息的信息。

示例二

下面是另一个简单的示例,代码中展示了如何将客户端向服务器发起的请求,广播给所有的客户端:

  • server.js
const app = require('http').createServer(handler);
const io = require('socket.io')(app);

app.listen(3000);

function handler(req, res) {
  res.writeHead(200);
  res.end("Welcome to my WebSocket server");
}

io.on('connection', function(socket) {
  console.log('有新客户端连接:' + socket.id);
  socket.on('request', function(msg) {
    console.log('收到客户端的请求:' + msg);
    io.emit('response', msg);
  });
});
  • client.html
<!DOCTYPE html>
<html>
<head>
  <script src="/socket.io/socket.io.js"></script>
</head>
<body>
  <input type="text" id="input">
  <button onclick="sendRequest()">发起请求</button>
  <br>
  <br>
  <ul id="messages"></ul>
  <script>
    var socket = io.connect('http://localhost:3000');
    socket.on('connect', function(){
      console.log('连接成功');
    });
    socket.on('response', function(msg){
      var li = document.createElement('li');
      li.innerText = msg;
      document.getElementById('messages').appendChild(li);
    });

    function sendRequest() {
      var request = document.getElementById('input').value;
      socket.emit('request', request);
    }
  </script>
</body>
</html>

启动WebSocket服务器,然后在浏览器中打开client.html,并在文本框中输入请求,点击发起请求按钮,就可以看到服务器返回的响应广播给了所有客户端。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs结合Socket.IO实现websocket即时通讯 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法

    要将文件夹按照存放路径变成一个对应的JSON,我们可以使用NodeJS的fs模块来实现。这个过程需要遍历文件夹及其子文件夹,获取每个文件/文件夹的路径和名称,并将其转换成对应的JSON格式。 以下是实现这个过程的详细攻略: 1. 使用fs模块读取文件夹 首先,我们需要使用fs模块的readdirSync方法读取指定目录下的所有内容(包括文件和子文件夹): c…

    node js 2023年6月8日
    00
  • 小心!AngularJS结合RequireJS做文件合并压缩的那些坑

    小心!AngularJS结合RequireJS做文件合并压缩的那些坑 背景简介 现在前端开发已经不仅仅是一些简单的HTML、CSS和JS代码堆砌了,对于一个成熟的前端项目我们必须考虑到一些比较高级的技术的应用,尤其是在文件打包合并等方面。本文主要讲解在使用AngularJS结合RequireJS做文件合并压缩时需要注意的一些“坑”。 正确的姿势 1. Req…

    node js 2023年6月8日
    00
  • Node.js websocket使用socket.io库实现实时聊天室

    我很乐意为您讲解“Node.js websocket使用socket.io库实现实时聊天室”的完整攻略。 1. Node.js安装 首先,我们需要在本地环境安装Node.js,Node.js是使用JavaScript开发服务器端应用程序的自由和开源的跨平台JavaScript运行环境。具体的安装方法可以在Node.js官网(https://nodejs.or…

    node js 2023年6月8日
    00
  • 使用nodejs分离html文件里的js和css详解

    使用Node.js分离HTML文件中的JS和CSS,通常需要以下步骤: 安装依赖 使用Node.js分离HTML文件中的JS和CSS,需要通过安装一些Node.js的依赖来实现。具体可以使用以下命令安装: npm install cheerio //用于解析html文件 npm install fs //用于读取和写入文件 npm install path …

    node js 2023年6月8日
    00
  • Node.js 使用request模块下载文件的实例

    Node.js使用request模块下载文件需要经过以下几个步骤: 1.安装request模块 在终端中运行以下命令可以安装request模块: npm install request 2.加载request模块并发送请求 在Node.js的代码中,需要使用require函数来加载request模块。然后使用request模块发送请求并下载文件。以下是一个简…

    node js 2023年6月8日
    00
  • Node.js 8 中的 util.promisify的详解

    让我来详细讲解“Node.js 8 中的 util.promisify的详解”。 1. 什么是util.promisify? 在 Node.js 8 版本中,引入了一个新的模块 util.promisify,它是一个实用工具,用于将一个返回值为 callback 的函数转换为 Promise 风格。使用 util.promisify,可以更轻松地将现有的回调…

    node js 2023年6月8日
    00
  • nodejs使用express创建一个简单web应用

    创建一个简单的web应用最常用的方式就是使用nodejs与express框架,下面是使用express框架创建一个简单的web应用的完整攻略。 1. 安装Node.js 在开始使用Express框架之前,需要先安装Node.js。可以访问Node.js的官网(https://nodejs.org/en/),下载最新版本的Node.js并按照提示进行安装。 2…

    node js 2023年6月8日
    00
  • node.js利用express自动搭建项目的全过程

    下面是node.js利用express自动搭建项目的全过程: 1. 安装Node.js和NPM 在开始搭建项目之前,你需要先安装Node.js和NPM。在命令行中输入以下命令来验证是否已经安装: node -v npm -v 如果已经安装,则会显示对应的版本号。如果没有安装,请先下载安装Node.js和NPM。 2. 安装Express Express是no…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部