node实现websocket聊天室

const express = require(‘express‘);
const app = express();
const ws = require(‘ws‘).Server;
const wss = new ws({port: 3001});
var sockets = [];

wss.on(‘connection‘, function(ws) {
    ws.send(‘连接成功‘);
    ws.send(‘欢迎进入聊天室‘);
    sockets.push(ws);

    ws.on(‘message‘, function(data) {
        ws.send(data);

        try {
            sockets.forEach(function (socket) {
                 if (ws != socket) {
                    socket.send(data);
                 }
            });
        } catch (err) {
            console.log(err);
        }
    });

    ws.on(‘error‘, function(e) {
        console.log(e);
    });
    ws.on(‘close‘, function(e) {
        console.log(e);
    });
});

app.use(express.static(__dirname)).listen(3000, ‘localhost‘);
app.get(‘/‘, (req, res) => {
    res.sendFile(__dirname+‘/websocket.html‘);
});

  

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>websocket</title>
    <link rel="stylesheet" href="test.css">
</head>
<body>
<input id="msg" type="text"/>
<button id="send" onclick="sendMsg()">发送</button>
<script>
    var ws = new WebSocket(‘ws://localhost:3001‘);
    ws.onopen = function(e) {
        console.log(e);
    };

    ws.onmessage = function(data) {
        console.log(data.data);
        showMsg(data.data);
    };

    ws.onerror = function(e) {
        console.log(e);
    };
    ws.onclose = function(e) {
        console.log(e);
    };

    function sendMsg() {
        var msg = document.getElementById(‘msg‘).value;
        var now = (new Date()).toLocaleTimeString();
        ws.send(now+‘@‘+msg);
    }

    function showMsg(data) {
        var msg = document.createElement(‘div‘);
        msg.innerHTML = data;
        document.body.appendChild(msg);
    }

    document.onkeyup = function(event) {
        event = event || window.event;
        if (event.keyCode == 13) {
            sendMsg();
        }
    };
</script>
</body>
</html>

  

原文地址:https://www.cnblogs.com/huangtonghui/p/8418080.html

时间: 2024-10-10 23:22:48

node实现websocket聊天室的相关文章

Node实战之聊天室

Node实战之聊天室 Node如何同时处理Http和WebSocket 1.只出现在用户访问聊天程序网站时:Web浏览器->Http请求->Node服务器->Http响应->Web浏览器 2.在用户聊天时持续发生:Web浏览器->WebSocket数据发送->Node服务器->WebSocket数据接收->Web浏览器 开始搭建 1.创建程序文档结构(如下图所示) 2.指明依赖项 程序的依赖项是在package.json文件中指明的.这个文件总是被放在程序的

WebSocket聊天室demo

根据Socket异步聊天室修改成WebSocket聊天室 WebSocket特别的地方是 握手和消息内容的编码.解码(添加了ServerHelper协助处理) ServerHelper: using System; using System.Collections; using System.Text; using System.Security.Cryptography; namespace SocketDemo { // Server助手 负责:1 握手 2 请求转换 3 响应转换 clas

php websocket聊天室,支持私聊

后台代码: <?php //send用户加入 //send1发送信息 //send2退出登录 error_reporting(E_ALL ^ E_NOTICE); ob_implicit_flush(); //连接服务器 $sk = new Sock('127.0.0.1',8000); $sk->run(); class Sock{ public $sockets; public $users; public $master; private $sda = array();//已接收的数据

基于Node的Web聊天室

1 项目名称 Web聊天室(<这是NodeJs实战>第二章的一个案例,把整个开发过程记录下来) 2 项目描述 该项目是一个简单的在线聊天程序.打开聊天页面,程序自动给用户分配一个昵称,进入默认的Lobby聊天室.用户可以发送消息,也可以使用聊天命令(聊天命令以/开头)修改自己的昵称或者加入已有的聊天室(聊天室不存在时,创建新的聊天室).在加入或创建聊天室时,新聊天室的名称会出现在聊天程序顶端的水平条上,也会出现在聊天消息区域右侧的可用房间列表中.在用户换到新房间后,系统会显示信息以确认这一变化

php +html5 websocket 聊天室

针对内容比较长出错,修改后的解码函数 和 加码函数 原文请看上一篇 http://yixun.yxsss.com/yw3104.html function uncode($str,$key){ $mask = array(); $data = ''; $msg = unpack('H*',$str); $head = substr($msg[1],0,2); if ($head == '81' && !isset($this->slen[$key])) { $len=substr($

swoole 1.79 websocket 聊天室 基于swoole_server

基于 swoole 1.79 swoole_server 写的 websocket 网页聊天室,基本功能,以供参考 所需环境 php swoole 1.79 redis <a href="http://pan.baidu.com/s/1o6uTT7W">源码百度网盘下载</a>

零基础实现node+express个性化聊天室

本篇文章使用node+express+jquery写一个个性化聊天室,一起来get一下~(源码地址见文章末尾) 效果图 项目结构 实现功能 登录检测 系统自动提示用户状态(进入/离开) 显示在线用户 支持发送和接收消息 自定义字体颜色 支持发送表情 支持发送图片 下面将一一讲解如何实现 前期准备 node及npm环境.express.socket.io 具体实现 1.将聊天室部署到服务器 先用node搭建一个服务器,部署在localhost:3000端口,先尝试向浏览器发送一个"hello wo

swoole webSocket 聊天室示例

swoole1.7.9增加了内置的WebSocket服务器支持,通过几行PHP代码就可以写出一个异步非阻塞多进程的WebSocket服务器. 基于swoole websocket的用户上下线通知,在线用户列表,群聊等简易功能的聊天室: 源码前往github : https://github.com/wanggang826/about_swoole/websocket_chat 简易聊天室示例地址:  http://sw.wanggangg.top/websocket_chat 原文地址:http

websocket 聊天室搭建技术点

spring 配置: <bean id="websocket" class="com.xianlaohu.yao.controller.socket.SocketHandler"/> <websocket:handlers>    <websocket:mapping path="/room/chat" handler="websocket"/>    <websocket:hands