express + socket.io实现超简易聊天室

什么是socket.io

socket.io是webSocket的一个封装组件,实现双向通信,可以用这个来实现聊天室功能、在线小游戏等等,是个有趣好玩的东西,博主就喜欢捣鼓这些

实现聊天室思路

聊天室就是要聊天嘛,就像打电话一样,我这边说话你那边应该要马上听到,所以就需要用到双向通信,浏览器发出一条信息比如是一个字符串'message',服务端接收然后立马将它发送出去给需要接收的浏览器

首先下载express和socket.io的依赖包

cnpm install --save express
cnpm install --save socket.io
前端代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .chat{
            width: 300px;
            height: 500px;
            text-align: center;
            margin: 0 auto;
            border: 1px solid #ccc;
        }
        .message{
            width: 100%;
            height: 460px;
        }
    </style>
</head>
<body>
    <div class="chat">
        <div class="message"></div>
        <input id="text" type="text" placeholder="请输入聊天信息">
        <button onclick="chat()">发送信息</button>
    </div>

    <script src="/socket.io/socket.io.js"></script>

    <script>
        var message = document.getElementsByClassName('message')[0]
        var socket = io.connect('http://localhost:1234');
        //从服务端接收数据
        socket.on('message',function (data) {
        
            message.innerHTML += data + '<br>';
        })
        function chat(){
            var text = document.getElementById('text').value
            //向服务端发送数据
            socket.emit('message', {message:text});


        }

    </script>
</body>
</html>
node代码
var express = require('express')
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);


//提供静态文件服务
app.use(express.static(__dirname));



io.on('connection', function (socket) {
    socket.on('message', function (data) {
        //服务端像所以也没发送数据
        io.sockets.emit('message', data.message);
    });

});

server.listen(1234,function () {
    console.log('连接成功');
})

几个要点稍微提一下首先是前端引入js文件时候

<script src="/socket.io/socket.io.js"></script>

可能你会疑惑本地没有这个文件,但其实你在服务端运行你的html时候它就会自动生成所以不用担心直接这样引入就行啦

关于发送接收信息

socket.emit()//发送
socket.on()//接收

io.sockets.emit()//只要服务端这样哦,像所有连接server的发送就像广播了

最后运行node,打开两个对应端口的html,结果为




如果有哪里说的不对或者不好还请见谅!谢谢!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhzzcc_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值