node.js中使用socket.io的方法

使用Socket.IO在Node.js中建立实时双向通信的方法如下:

安装

在终端中使用npm安装socket.io模块:

npm install socket.io --save

服务端代码

在服务端的代码中,需要新建一个Socket.IO实例,然后监听客户端与服务端之间的通信。以下是一个使用Express框架的例子。

// 引入Express框架和Socket.IO模块
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const io = require('socket.io')(server);

// 在服务端与客户端之间建立连接
io.on('connection', function(socket) {
    console.log('A user connected');

    // 监听客户端发送的消息
    socket.on('chat message', function(msg) {
        console.log('message: ' + msg);

        // 将消息广播给所有连接的客户端
        io.emit('chat message', msg);
    });

    // 在客户端与服务端之间断开连接
    socket.on('disconnect', function() {
        console.log('A user disconnected');
    });
});

// 启动服务器并监听端口
server.listen(3000, function() {
  console.log('listening on *:3000');
});

在上面的代码中,当服务端接收到客户端的连接请求时,就会触发connection事件。紧接着,服务端就监听客户端发送的chat message消息,并将消息发送给所有连接的客户端。当客户端与服务端之间断开连接时,就会触发disconnect事件。

客户端代码

在客户端代码中,需要新建一个Socket.IO实例,然后连接服务端。以下是一个使用jQuery的例子。

// 引入Socket.IO模块
const socket = io();

// 监听服务端发送的消息
socket.on('chat message', function(msg) {
    $('#messages').append($('<li>').text(msg));
});

// 监听表单的提交事件,向服务端发送消息
$('form').submit(function() {
    socket.emit('chat message', $('#m').val());
    $('#m').val('');
    return false;
});

在上面的代码中,当客户端连接服务端后,就会出发connection事件。客户端通过on方法来监听服务端发送的chat message事件,并将消息显示在页面上。当用户提交了表单后,就会通过emit方法向服务端发送消息。

示例

以下是一个完整的示例。通过这个聊天室,你可以在不同的浏览器窗口中实时地发送和接收消息。

服务端代码

// 引入Express框架和Socket.IO模块
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const io = require('socket.io')(server);

// 在服务端与客户端之间建立连接
io.on('connection', function(socket) {
    console.log('A user connected');

    // 监听客户端发送的消息
    socket.on('chat message', function(msg) {
        console.log('message: ' + msg);

        // 将消息广播给所有连接的客户端
        io.emit('chat message', msg);
    });

    // 在客户端与服务端之间断开连接
    socket.on('disconnect', function() {
        console.log('A user disconnected');
    });
});

// 启动服务器并监听端口
server.listen(3000, function() {
    console.log('listening on *:3000');
});

客户端代码

<!DOCTYPE html>
<html>
<head>
    <title>Socket.IO Chat Example</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        #messages {
            list-style-type: none;
            margin: 10px 0;
            padding: 0;
        }

        #messages li {
            margin-bottom: 5px;
            font-size: 14px;
        }

        #messages li:last-child {
            margin-bottom: 0;
        }

        #message-form {
            margin-top: 10px;
        }

        #message-form input[type="text"] {
            width: 80%;
            height: 30px;
            margin-right: 10px;
            padding: 5px;
            font-size: 14px;
            border: 1px solid #ccc;
            border-radius: 5px;
        }

        #message-form button {
            width: 15%;
            height: 30px;
            font-size: 14px;
            border-radius: 5px;
            background-color: #0099ff;
            color: #fff;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <ul id="messages"></ul>
    <form id="message-form">
        <input id="m" type="text" autocomplete="off"></input>
        <button>Send</button>
    </form>
    <script src="/socket.io/socket.io.js"></script>
    <script src="https://code.jquery.com/jquery-3.5.0.min.js"></script>
    <script>
      $(function () {
          const socket = io();

          // 监听服务端发送的消息
          socket.on('chat message', function(msg) {
              $('#messages').append($('<li>').text(msg));
          });

          // 监听表单的提交事件,向服务端发送消息
          $('form').submit(function() {
              socket.emit('chat message', $('#m').val());
              $('#m').val('');
              return false;
          });
      });
    </script>
</body>
</html>

在上面的示例中,服务端使用Express框架搭建HTTP服务器,并使用Socket.IO模块与客户端实现实时通信。客户端使用了jQuery库,并在网页中建立了一个聊天室的界面,在表单提交时将用户输入的消息发送给服务端,并在收到服务端的消息时将消息显示在页面上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js中使用socket.io的方法 - Python技术站

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

相关文章

  • node执行cmd或shell命令使用介绍

    当你需要在Node.js程序中执行操作系统的命令或者脚本时,Node.js提供了一些内置模块可以用来执行这类操作,例如child_process和exec,spawn等。这篇文章将简要地介绍这些模块的使用以及示例。 child_process 在Node.js中,child_process是与操作系统进程交互的主要方法之一。它提供了三个方法:exec, ex…

    node js 2023年6月8日
    00
  • 从零学习node.js之express入门(六)

    让我来详细讲解一下“从零学习node.js之express入门(六)”的完整攻略。 一、前置知识 在开始本文之前,需要掌握以下基础知识: Node.js基础知识 HTTP协议基础知识 HTML、CSS、JavaScript基础及其开发工具的使用 express框架的基础知识 如果您还不具备相关的基础知识,可以先查看相关的基础教程,建议先学习“从零学习node…

    node js 2023年6月8日
    00
  • node.js制作一个简单的登录拦截器

    下面是node.js制作一个简单的登录拦截器的完整攻略: 什么是登录拦截器 登录拦截器是一种常用的认证机制,用于对各种应用程序进行安全性验证,以防止未经授权的用户进入应用程序。在Node.js中,我们可以通过编写一个中间件来实现这一功能。 如何制作一个登录拦截器 以下是制作一个登录拦截器的步骤: 配置 Express 应用程序 const express =…

    node js 2023年6月8日
    00
  • nodejs搭建本地服务器并访问文件操作示例

    下面是详细的攻略。 简介 Node.js 是一个基于 Chrome V8 JavaScript 引擎构建的 JavaScript 运行时环境,使 JavaScript 可以脱离浏览器运行于服务器端。它的出现使得 JavaScript 不再局限于浏览器,可以利用它进行服务器端的操作。本攻略将介绍如何利用 Node.js 搭建本地服务器并进行文件操作。 服务端搭…

    node js 2023年6月8日
    00
  • 浅谈Node.js中的定时器

    下面是浅谈Node.js中的定时器的完整攻略。 什么是Node.js中的定时器 在Node.js中,定时器是指一种可以让代码在指定的时间间隔内重复执行的机制。Node.js中有三种类型的定时器,分别是setTimeout、setInterval、setImmediate。这些定时器都是全局可用的函数,可以在任何地方调用。 setTimeout setTime…

    node js 2023年6月8日
    00
  • Nodejs从有门道无门菜鸟起飞必看教程

    首先,这是一篇关于Node.js的入门教程,主要适用于零基础或者基础薄弱的Node.js开发者。在这篇教程中,你将学会如何使用Node.js,包括如何安装、如何搭建开发环境、如何编写基础的Node.js程序、如何使用Node.js处理HTTP请求、如何使用模块等。下面是该教程的完整攻略: 安装Node.js 首先,你需要从官网(https://nodejs.…

    node js 2023年6月8日
    00
  • 浅析node.js中close事件

    下面我将为你详细讲解“浅析node.js中close事件”。 什么是close事件? 在Node.js中,close事件是一个简单的事件监听器,它是在流(stream)或者网络套接字(socket)的连接关闭时触发的。例如:当客户端从服务端断开连接时,服务端会收到一个close事件。 close事件的原理 close事件的原理是,当一个连接被关闭时,Node…

    node js 2023年6月8日
    00
  • nodeJS实现简单网页爬虫功能的实例(分享)

    下面是 “nodeJS实现简单网页爬虫功能的实例(分享)” 的完整攻略。 简介 网页爬虫是一种自动抓取互联网上数据的技术,可以快速检索网页内容并提取需要的信息,对于开发者或数据分析师来说,网页爬虫是一个高效的数据采集工具。本文主要介绍如何使用NodeJS实现简单的网页爬虫功能。 步骤 第一步:准备工作 在正式开始编写网页爬虫之前,需要在本地安装Node.js…

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