`
fsfish
  • 浏览: 14233 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用websocket快速实现多人聊天功能

阅读更多

 

J2EE7已经发布了 参照 http://www.iteye.com/news/27980

j2ee7支持websocket协议,eclipse4.3 netbeans 7.3.1 这些ide 都已经开始支持.

但文档相对较少,下面利用netbeans 快速搭建一个多人聊天的功能

https://netbeans.org/downloads/ 迅速下载一个

选择ALL的安装包  224M 下载完后快速安装。

新建一个j2ee项目

<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1027" type="#_x0000_t75" style='width:415.5pt;height:227.25pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\ASUS\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->

web页添加chat.hml  建立和websocket 连接

<div id="messages"></div>

         <script type="text/javascript">

                   var webSocket =

                            new WebSocket('ws://localhost:8080/EnterpriseApplication1-war/chat');

 

                   webSocket.onerror = function(event) {

                            onError(event)

                   };

 

                   webSocket.onopen = function(event) {

                            onOpen(event)

                   };

 

                   webSocket.onmessage = function(event) {

                            onMessage(event)

                   };

 

                   function onMessage(event) {

                            document.getElementById('messages').innerHTML += '<br />' + event.data;

                   }

 

                   function onOpen(event) {

                            document.getElementById('messages').innerHTML = '已连接到服务器......<br/>';

                   }

 

                   function onError(event) {

                            alert(event.data);

                   }

 

                   function start() {

                            webSocket.send('hello');

                            return false;

                   }

               

                function send(){

                      var talk = $('talk');

                     var nike = $('nike');

                     webSocket.send('<strong style="color:red">'+nike.value+':</strong>'+talk.value);

                }

               

                function $(id){

                    return document.getElementById(id);

                }

 

         </script>

 

 

 

服务端代码

 

@ServerEndpoint("/chat")

public class WebSocketTest {

 

@OnMessage

public void onMessage(String message, Session session)

    throws IOException, InterruptedException {

    // Print the client message for testing purposes

   

    System.out.println("Received: " + message);

   

  

         //获取所有存活会话,并相应消息

    Set<Session> set=session.getOpenSessions();

    Iterator<Session> it=set.iterator();

//迭代遍历  

 while(it.hasNext()){

        Session everySession=it.next();

        if(everySession.isOpen()){

            everySession.getBasicRemote().sendText(message);

        }

    }

 

在项目上点击运行,运行netbeans自带的glassfish 4

多开继续页面 访问路径http://localhost:8080/EnterpriseApplication1-war/chat.html

可以看到如下效果

 

<!--[if gte vml 1]><v:shape id="图片_x0020_14" o:spid="_x0000_i1026" type="#_x0000_t75" style='width:405.75pt; height:491.25pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\ASUS\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->

 

 

<!--[if gte vml 1]><v:shape id="图片_x0020_17" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:370.5pt; height:396.75pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\ASUS\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->

 

附源码:

  • 大小: 69 KB
  • 大小: 16.6 KB
  • 大小: 5.3 KB
分享到:
评论

相关推荐

    webChat使用websocket实现网页多人聊天

    在本项目"webChat"中,我们将探讨如何利用WebSocket技术来构建一个支持多人聊天的网页应用。 一、WebSocket简介 WebSocket是HTML5新增的一项技术,它允许浏览器和服务器进行全双工通信,即双方可以同时发送数据,而...

    java利用websocket实现多人聊天室(springmvc框架)

    在本文中,我们将深入探讨如何使用Java和Spring MVC框架实现一个基于WebSocket的多人聊天室。WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许实时双向通信,非常适合用于在线聊天应用。 首先,我们...

    基于vue和websocket的多人在线聊天室

    在本文中,我们将探讨如何构建一个基于Vue.js和WebSocket的多人在线聊天室。Vue.js是一个流行的前端JavaScript框架,用于构建用户界面,而WebSocket则是一种在客户端和服务器之间提供全双工、低延迟通信的协议。结合...

    Golang(Gin框架)+websocket 实现的多人聊天室+代码+详细文档

    为了实现多人聊天功能,我们需要一个数据存储方案。在这个项目中,使用了MySQL数据库来存储用户信息和聊天记录。MySQL是流行的开源关系型数据库,支持事务处理,具有高可用性和高性能,非常适合存储结构化数据。 在...

    基于websocket的多人多聊天室服务器

    在本文中,我们将深入探讨如何基于WebSocket构建一个支持多人多聊天室的服务器,以及如何利用OpenResty这一强大的Web服务器平台来实现这一目标。 首先,WebSocket API允许Web应用程序在单个TCP连接上进行全双工通信...

    WebSocket精简多人聊天

    - 在服务器端,为了实现多人聊天功能,我们需要维护一个客户端连接的会话列表。每当有新的连接建立或关闭,都需要更新这个列表。 - 当接收到一条新消息时,遍历会话列表,通过`Session.getBasicRemote().sendText...

    websocket 多人聊天室 网页版

    `onMessage`方法用于接收客户端发送的消息,并可以调用`Session`对象的`getBasicRemote()`方法向所有连接的客户端广播消息,实现多人聊天功能。 客户端的实现通常通过JavaScript进行,使用WebSocket对象与服务器...

    FastApi、Websocket、多人聊天室

    本文将详细讲解如何在Python的FastAPI框架中利用WebSocket技术实现一个多人聊天室。 FastAPI是一个现代化的、高性能的web框架,用于构建API。它基于TypeHinting,提供自动化的API文档和易于使用的接口。WebSocket...

    java 基于websocket实现的视频聊天

    Java基于WebSocket实现的视频聊天是一种实时通信(Real-Time Communication, RTC)的应用,它利用了WebSocket这一先进的网络协议来实现高效、双向的数据传输。WebSocket协议是HTML5的一个重要特性,为客户端与服务器...

    vue2 使用websocket搭建简易版多人聊天应用,包含服务端和前端

    在本文中,我们将深入探讨如何使用Vue2和WebSocket技术构建一个简单的多人聊天应用程序。这个应用将涵盖服务端和前端的实现,旨在展示WebSocket在实时通信中的应用以及Vue2框架在构建用户界面时的优势。 首先,让...

    多人聊天室

    本项目采用Java技术,利用WebSocket协议来构建一个多人聊天室,实现了用户间的实时消息传递,同时也支持一对一的私聊功能。WebSocket是一种在客户端和服务器之间建立长连接的协议,相较于传统的HTTP请求-响应模式,...

    多人聊天_html5_nodejs_CSS3_websocket_

    这个项目以“多人聊天_html5_nodejs_CSS3_websocket_”为标题,显然它利用了现代Web技术来实现这样一个功能。让我们详细探讨一下这个项目所涉及的关键知识点。 首先,HTML5(超文本标记语言第五版)是构建Web页面的...

    stomp实现多人聊天和单人聊天

    在“stomp实现多人聊天和单人聊天”的场景中,我们需要理解以下几个关键知识点: 1. **WebSocket**:WebSocket是HTML5引入的一种在单个TCP连接上进行全双工通信的协议。传统的HTTP协议是请求-响应模式,而WebSocket...

    ActiveMQ使用Ajax实现多人聊天室

    在本场景中,我们将讨论如何利用ActiveMQ和Ajax技术来实现一个多人聊天室的功能。 首先,了解ActiveMQ的基本概念。ActiveMQ作为消息代理,它接收、存储并转发消息给订阅者。生产者发送消息到ActiveMQ,而消费者则从...

    基于webrtc开发的多人视频会议

    本项目正是基于WebRTC技术,实现了多人视频会议的功能,为用户提供了一个高效、便捷的在线交流平台。 【描述】:“基于WebRTC开发的多人视频会议,信令服务器使用Java WebSocket,采用SpringBoot架构。用户可以通过...

    websocket实现的简单聊天

    总结来说,"基于WebSocket的简单多人聊天"项目利用了WebSocket协议的实时通信特性,结合Java EE的WebSocket API,实现了服务器与多个客户端之间的实时双向通信,构建了一个简单的多人聊天平台。在这个过程中,开发者...

    C# mvc websocket 在线聊天实例

    实现在线聊天功能** 在线聊天的核心是实现消息的发送和接收。服务器端需要维护一个连接池,保存所有在线用户的WebSocket连接。当有新的消息发送时,遍历连接池,将消息推送给所有在线用户。 ```csharp private ...

    多人聊天室(asp.net)

    【多人聊天室(asp.net)】是一个基于ASP.NET技术实现的在线实时交流平台,它能够支持多用户同时在线对话,提供了基本的聊天功能,让用户可以在网络上进行即时沟通。麻雀虽小,五脏俱全,意味着这个聊天室虽然规模不大...

Global site tag (gtag.js) - Google Analytics