前端websocket实现简易聊天室

分为客户端和服务端,客户端就是一个简单的html页面,服务端使用node进行编写。具体代码如下

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>websoket</title>
</head>
<body>
    <h1>chat room</h1>
    <input type="text" id="msg" />
    <button id="send">发送</button>
    <script type="text/javascript">
        var websocket = new WebSocket("ws://127.0.0.1:3001/");

        function showMsg(str){
            var div = document.createElement('div');
            div.innerHTML = str;
            document.body.appendChild(div)
        }

        websocket.onopen=function(){
            console.log("open");
            // 用户发送文字
            document.getElementById('send').onclick = function() {
                var txt = document.getElementById('msg').value;
                if (txt) {
                    websocket.send(txt);
                }
            }
        }
        websocket.onclose = function() {
            console.log("close");
        }
        websocket.onmessage = function(e) {
            console.log(e.data);
            showMsg(e.data);
        }
    </script>
</body>
</html>

server.js

var ws = require("nodejs-websocket"). // 引入webSocket模块

var port = 3001;

var clientCount = 0;  // 用来区分不同的用户

var server = ws.createServer(function (conn) {
    console.log("New connection")
    clientCount++  // 新建一个webScoket连接就加一,保证用户名唯一性
    conn.nickname = "user" + clientCount
    // 用户进入,广播给所有的用户
    broadcast("******* "+conn.nickname + " comes in *******");


    conn.on("text", function (str) {
        console.log("Received "+str)
        broadcast(conn.nickname + " say: " + str)
    })  // 用户发送文字,广播给所有的用户


    conn.on("close", function (code, reason) {
        broadcast("******* " + conn.nickname + " left *******");
    }) // 用户离开,广播给所有的用户
    
    conn.on("error", function(err) {
        console.log("error: "+err);
    })
})

// 端口监听
server.listen(port,'0.0.0.0',()=>{
  console.log('websocket服务启动-使用端口',port);
});

console.log("websocket server listening on " + port);

// 遍历所有的连接进行遍历发送文字
function broadcast (str) {
    server.connections.forEach(function (connection) {
        connection.sendText(str)
    })
}

使用方法

创建index.htmlserver.js文件,在server文件目录下npm init初始化package.json文件,并安装nodejs-websocket

npm install nodejs-websocket --save -D

启动server.js

node server.js

多开几个index.html页面就能体验到效果了
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java WebSocket是一种用于实现双向通信的网络协议,可以帮助我们实现简易聊天室。下面是一个基于Java WebSocket实现简易聊天室的示例代码: 首先,我们需要定义一个WebSocket处理程序: ```java @ServerEndpoint("/chat") public class ChatEndpoint { private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>()); @OnOpen public void onOpen(Session session) { sessions.add(session); } @OnMessage public void onMessage(String message, Session session) throws IOException { for (Session s : sessions) { // 过滤自己 if (!s.equals(session)) { s.getBasicRemote().sendText(message); } } } @OnClose public void onClose(Session session) { sessions.remove(session); } } ``` 在这个处理程序中,我们使用`@ServerEndpoint("/chat")`注解指定了WebSocket的端点,即`/chat`。在`onOpen`方法中,我们将新的会话添加到会话集合中。在`onMessage`方法中,我们将接收到的消息广播给所有其他会话。在`onClose`方法中,我们将关闭的会话从会话集合中移除。 接下来,我们需要在`web.xml`文件中配置WebSocket: ```xml <web-app> <display-name>WebSocket Chat</display-name> <servlet> <servlet-name>chat</servlet-name> <servlet-class>org.glassfish.tyrus.servlet.TyrusServlet</servlet-class> <init-param> <param-name>org.glassfish.tyrus.servlet.websocketClassnames</param-name> <param-value>com.example.ChatEndpoint</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>chat</servlet-name> <url-pattern>/chat/*</url-pattern> </servlet-mapping> </web-app> ``` 在这个配置中,我们使用了`org.glassfish.tyrus.servlet.TyrusServlet`作为WebSocket的Servlet。我们将`com.example.ChatEndpoint`指定为WebSocket处理程序的类名,并将其加载到`servlet`中。 现在,我们就可以在HTML页面中使用WebSocket来连接我们的聊天室了: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebSocket Chat</title> </head> <body> <input type="text" id="message"> <button onclick="send()">Send</button> <div id="output"></div> <script> var socket = new WebSocket('ws://localhost:8080/chat'); socket.onmessage = function (event) { var output = document.getElementById('output'); output.innerHTML += event.data + '<br>'; }; function send() { var message = document.getElementById('message').value; socket.send(message); } </script> </body> </html> ``` 在这个HTML页面中,我们创建了一个WebSocket连接到`ws://localhost:8080/chat`。当收到消息时,我们将其添加到页面上的`<div>`元素中。当点击发送按钮时,我们将输入框中的文本发送到WebSocket连接中。 这样,我们就完成了一个简易的Java WebSocket聊天室实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值