java ee-学习JavaEE中,使用WebSocket的问题

问题描述

学习JavaEE中,使用WebSocket的问题
最近刚刚学习了JSP/Servlet的知识,书上有讲WebSocket的技术,自己想实现一下,但总是有问题,如下图:

源代码如下:

/*页面脚本*/ <!DOCTYPE html><html><head><meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"" /><title>使用WebSocket通信</title><script type=""text/javascript"">    var webSocket=new WebSocket(""ws://127.0.0.1:8080/WebSocket/websocket/chat"");    var sendMsg=function()    {        var inputElement=document.getElementById('msg');        //发送信息        webSocket.send(inputElement.value);        //清空单行文本框        inputElement.value="""";    };    var send=function(event)    {        if(event.keyCode==13)        {            sendMsg();        }    };    webSocket.onopen = funcntion()    {        alert(""hello webSocket!"");        //为onmessage事件绑定监听器,接收消息        webSocket.onmessage = function(event) {            var show = document.getElementById('show');            //接收并显示消息            show.innerHTML+= event.data + ""<br/>"";            show.scrollTop = show.scrollHeight;        }        document.getElementById('msg').onkeydown = send;        document.getElementById('sendBn').onclick = sendMsg;    };    webSocket.onclose = function() {        document.getElementById('msg').onkeydown = null;        document.getElementById('sendBn').onclick = null;        Console.log('WebSocket已经关闭。');    };</script></head><body>    <div style=""width:600px; height:240px; overflow-y:auto;border:1px solid #333;"" id=""show""></div>    <input type=""text"" size=""80"" id=""msg"" name=""msg"" placeholder=""输入聊天内容""/>    <input type=""button"" value=""发送"" id=""sendBn"" name=""sendBn""/> </body></html>
//实现的Java类 package com.xlf;import java.io.IOException;import java.util.Set;import java.util.concurrent.CopyOnWriteArraySet;import java.util.concurrent.atomic.AtomicInteger;import javax.websocket.OnClose;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;@ServerEndpoint(value = ""/websocket/chat"")public class ChatEntpoint {    private static final String GUEST_PREFIX = ""访客"";    private static final AtomicInteger connectionIds = new AtomicInteger(0);    // 定义一个集合,用于保存所有接入的WebSocket客户端    private static final Set<ChatEntpoint> clientSet = new CopyOnWriteArraySet<ChatEntpoint>();    private final String nickname;    private Session session;    public ChatEntpoint() {        nickname = GUEST_PREFIX + connectionIds.getAndIncrement();    }    // 当客户端连接进来时自动激发该方法    @OnOpen    public void start(Session session) {        this.session = session;        clientSet.add(this);        String message = String.format(""[%s %s]"" nickname加入了聊天室!"");        broadcast(message);    }    // 当客户端断开连接时自动激发该方法    @OnClose    public void end() {        clientSet.remove(this);        String message = String.format(""[%s %s]"" nickname离开了聊天室!"");        broadcast(message);    }    // 每当收到客户端消息时自动激发该方法    @OnMessage    public void incoming(String message) {        String filterMessage = String                .format(""%s %s"" nickname filter(message));        broadcast(filterMessage);    }    public static void broadcast(String msg) {        for (ChatEntpoint client : clientSet) {            try {                synchronized (client) {                    //发送消息                    client.session.getBasicRemote().sendText(msg);                }            } catch (IOException e) {                System.out.println(""聊天错误,向客户端 ""+client+"" 发送消息出现错误。"");                clientSet.remove(client);                try {                    client.session.close();                } catch (IOException e1) {}                String message=String.format(""[%s %s]"" client.nickname已经被断开了"");                broadcast(message);            }        }    }    public static String filter(String message){        if(message==null)            return null;        char content[]=new char[message.length()];        message.getChars(0 message.length() content 0);        StringBuilder result=new StringBuilder(content.length+50);        for (int i = 0; i < content.length; i++) {            switch (content[i]) {            case '<':                result.append(""&lt;"");                break;            case '>':                result.append(""&gt;"");                break;            case '&':                result.append(""&amp;"");                break;            case '""':                result.append(""&quot;"");                break;            default:                result.append(content[i]);                break;            }        }        return (result.toString());    }}

新人,希望有大神指教!

解决方案

应该是function() 拼写错误吧?

时间: 2024-10-30 11:00:37

java ee-学习JavaEE中,使用WebSocket的问题的相关文章

安全注释和授权在GlassFish和Java EE 5 SDK中的应用

安全性对于企业环境非常重要.在 Java EE 5 / GlassFish 环境中,您可以通过以下几种方式实现安全性: 传输层安全性 (TLS) / 安全套接字层 (SSL) 技术 身份验证 (Authentication) 和授权 (Authorization) 消息层安全性(仅适用于 GlassFish 中的 Web 服务) 本文讨论身份验证和授权.参考资料 [1].[2] 和 [3] 讨论了如何在客户端和服务器端为 Enterprise JavaBeans 和 Web 服务建立 SSL 环

怎样练就Java EE 高手,为后人指路

问题描述 大家好!工作一年了,自己的技术也有了一定程度的提高!但是现在感觉自己进步的太慢!似乎在Java EE 的大河中失去了方向!不知道自己应该从何学起!本人对技术特别的向往!每天都能接触到一些新的东西!但是感觉东西大多了!我现在在大连工作,在大连这个地方主要是做对日外包的,技术要求不是很高,牛人太少!所以想各位指点一下,给小弟一个方向,现在自己很怕走弯路!现在公司里我算是高手了,但是自己明白要学的东西还很多!希望各位吧自己的学习经历拿出来分享!指导一下后人. 解决方案 学JavaEE请不要做

Java EE 5技术简介

NetBeans IDE 6.0 的开发是在 Java EE 和 Glassfish 工作组的密切合作下完成的,它实现了与新的 Java EE 5 规范的完美集成,从而可以在此 IDE 中轻松地使用新规范.NetBeans IDE 6.0 是您快速学习 Java EE 5 编程并使用它高效工作的最佳途径. 本文档介绍了 Java EE 5 规范的一些重要概念,以及它们如何与您目前的编程项目相关联的.本文将 介绍以下主题: 标注取代部署描述符 简化的 EJB 软件开发 使用依赖关系注入来访问资源

《Java EE 7精粹》—— 导读

前言 Java EE 7平台建立在以前的版本之上,侧重于提高生产力和拥抱HTML5.本书面向的是想快速概览这个平台和回来复习基础知识的读者. 本书提供了Java EE 7平台中关键规范的概述(每章一个规范).本书绝不是一本介绍不同规范中每一个概念的详尽指南或教程,而是通过简单的代码示例来解释不同规范的主要概念.阅读本书,无需具备Java EE平台早期版本的知识,但你需要对Java有一些基本了解,以便理解代码. 这本书的重要部分来自<Java EE 6 Pocket Guide>(O'Reill

将Flex集成到Java EE应用程序的最佳实践

简介:传统的 Java EE 应用程序通常使用某种 MVC 框架(例如,Struts)作为前端用户界面,随着 Flex 的兴起,基于 RIA 的客户端能够给用户带来更酷的界面,更短的响应时间,以及更接近于桌面应 用程序的体验.本文将讲述如何将 Flex 集成至一个现有的 Java EE 应用程序中,以及如何应用最佳实 践高效率地并行开发 Java EE 和 Flex. 开发环境 本文的开发环境为 Windows 7 Ultimate,Eclipse 3.4,Flex Builder 3.Java

JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)

[前言] JSP本身是JavaWeb中的知识,但是在学习Android网络时,必然要涉及到与服务器之间的交互,所以学一下JSP以及其他JavaWeb的内容还是很有必要的,至少能明白程序在访问服务器时,整个过程的原理. 其实,在学习Android之前,Java和JavaWeb的知识都是要先学习的.本人是在2014年7月正式开始Android方向的研究学习,在这之前没有接触任何和计算机软件相关的知识(唯一相关的是,本科学过一门C语言课程,不过现在已经忘光了). 我们来看下面的这张图就知道了: 两张图

图片-java ee中的EJB出现错误:

问题描述 java ee中的EJB出现错误: 解决方案 看异常貌似是jdbc/MysqlDB_pm 这个数据源配置的问题

避免Java EE项目评估中的常见错误

错误|项目 摘要: 软件开发项目评估是软件开发周期中关键又具备挑战性的一步,它是计划,进度,人员以及其他相关步骤的基础.项目低估会带来紧张的进度,高度压力的工作环境,未可预料的资源紧缺,低质量,项目实施延误等风险, 可以最大限度的破坏客户的生意以及公司的信誉:而另一方面,带有过多不合理泡沫的评估也会导致无效率的资源浪费以及引起客户和公司之间的不信任.评估企业Java项目因为技术的更新成了一个难题,本文通过几个方面透视提供了评估企业Java项目时应该考虑的问题 假如你是一个重要软件项目的项目经理,

Java EE 5中的Web服务(JAX-WS)

Java API for XML Web Services (JAX-WS) 2.0,JSR 224 是 Java EE 5 平台的重要组成部分.作为 Java API for XML-based RPC 1.1 (JAX-RPC) 的后续发行版本,JAX-WS 简化了使用 Java 技术开发 Web 服务的工作.并且通过对多种协议(如 SOAP 1.1.SOAP 1.2.XML)的支持,以及提供用于支持其他协议和 HTTP 的工具,它解决了 JAX-RPC 1.1 中存在的一些问题.JAX-W