最近学完java ,迷惑在Apache tomcat 与aes 加解密以及服务端和客户端双向通信的各种疑难杂症、属实是难的脑仁疼,不知道各位自学的朋友们是这么度过这关的。
另外有没有哪位大哥帮忙助力一把
上世纪八十年代,当互联网开始在美国大学流行的时候,美国计算机名校伊利诺伊大学香槟分校(UIUC)的国家超级计算应用中心(National Center for Supercomputing Applications, NCSA)组织了一些研究生开始编写基于HTTP通信协议的服务器端和客户端程序。客户端端程序叫做mosaic,是第一个被普遍使用的网页浏览器,也是Netscape(网景)浏览器的前身,之后演变为Mozilla Firefox。而服务器端程序就是最早的Web服务器软件之一,名叫NCSA HTTPd,它完整地实现了HTTP协议,整个实验获得了成功。然而伊利诺伊大学香槟分校也许仅出于学术研究目的,在实验成功后开发工作就没有继续下去,研究小组也随之解散,但他们将这两个软件开源,其代码可以自由下载修改并发布。
我可以介绍以下WebSocket技术来实现Apache Tomcat中的双端通信。具体步骤如下:
检查Tomcat的版本,WebSocket在 Tomcat 7.0.47及以上版本以及 Tomcat 8 中是默认启用的。
编写WebSocket Endpoint类,用于处理与客户端的通信。以下是一个简单的例子:
import javax.websocket.OnMessage;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/websocket")
public class MyEndpoint {
@OnMessage
public void onMessage(Session session, String message) {
System.out.println("Received message: " + message);
session.getBasicRemote().sendText("Received message: " + message);
}
}
以上示例创建了一个名为“websocket”的WebSocket端点,当接收到来自客户端的消息时,会将消息输出到服务器控制台并发回一个相同的消息。
<servlet>
<servlet-name>MyEndpoint</servlet-name>
<servlet-class>org.apache.tomcat.websocket.server.WsSci</servlet-class>
</servlet>
<listener>
<listener-class>org.apache.tomcat.websocket.server.WsContextListener</listener-class>
</listener>
其中,servlet-name值应与上述端点类中的@ServerEndpoint注解中的值相同。
var socket = new WebSocket("ws://localhost:8080/myapp/websocket");
socket.onmessage = function(event) {
console.log("Received message: " + event.data);
};
socket.onopen = function(event) {
socket.send("Hello, server!");
};
socket.onclose = function(event) {
console.log("Connection closed.");
};
以上代码创建了一个WebSocket连接,连接到“websocket”端点,当连接打开时,发送一条消息给服务器,当接收到消息时,将其输出到控制台上,并在连接关闭时输出一条消息。
注意事项:
要确保防火墙不会阻止WebSocket连接,默认情况下WebSocket连接通过端口8080进行。
如果在使用Tomcat时遇到问题,请确保使用的是最新版本的Tomcat,并且已经正确地配置了Tomcat工作目录。
参考资料:
https://tomcat.apache.org/tomcat-8.0-doc/web-socket-howto.html
https://www.baeldung.com/java-websockets
https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html
这是因为你刚刚学,会觉得比较陌生,比较吃力。坚持下去就好。TOMCAT用起来很方便,也很简单,多搭建几次就熟悉了。aes是加解密的算法,java中有现成的库可以直接调用,没有什么太复杂的地方。静下心来慢慢学习,过一段时间你会发现现在学习的的内容原来这么简单。。。