在客户机和服务器之间建立单一的双向连接,这就意味着客户只需要发送一个请求到服务端,那么服务端则会进行处理,处理好后则将其返回给客户端,客户端则可以在等待这个时间继续去做其他工作,整个过程是异步的。在本系列教程中,将指导用户如何在JAVA EE 7的容器GlassFish 4中,使用JAVA EE 7中的全新的解析Json API(JSR-353),以及综合运用jQuery和Bootstrap。本文要求读者有一定的HTML 5 Websocket的基础原理知识。
效果图
我们先来看下在完成这个教程后的效果图,如下所示:
准备工作
我们使用的是JDK 7 和MAVN 3进行库的构建工作,首先看pom.xml中关于Jave EE 7的部分:
${project.build.directory}/endorsed
UTF-8
javax
javaee-api
7.0
provided
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.7
1.7
${endorsed.dir}
org.apache.maven.plugins
maven-war-plugin
2.3
false
org.apache.maven.plugins
maven-dependency-plugin
2.6
[..]
同时,为了能使用GlassFish 4,需要增加如下的插件:
plugin>
org.glassfish.embedded
maven-embedded-glassfish-plugin
4.0
embedded-glassfish
${basedir}/target/${project.artifactId}-${project.version}.war
true
8080
${project.artifactId}
hascode
deploy
设置Websocket的Endpoint
我们先来看服务端Websocket的代码如下,然后再做进一步解析:
package com.hascode.tutorial;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.EncodeException;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint(value = "/chat/{room}", encoders = ChatMessageEncoder.class, decoders = ChatMessageDecoder.class)
public class ChatEndpoint