最全Java WebSocket框架_java websocket 框架(1),成为阿里P7移动架构师到底有多难

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

image

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

image

搜集费时费力,能看到此处的都是真爱!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

                });

        server.bind(8080).sync().channel().closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }
}

}


上述代码是使用Netty WebSocket的简单服务器示例。通过构建`ServerBootstrap`实例,并设置相关的handler和参数,我们可以开启一个WebSocket服务器。


在使用Netty WebSocket时,我们需要添加Netty WebSocket依赖。我们可以通过Maven来管理依赖,添加以下依赖配置:



io.netty netty-all 4.1.53.Final

### 4. Spring WebSocket


Spring WebSocket是Spring框架中的一部分,通过Spring WebSocket,我们可以很方便地集成WebSocket功能到Spring应用程序中。


示例代码如下所示:



@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new ChatHandler(), “/chat”).setAllowedOrigins(“*”);
}
}

public class ChatHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) {
System.out.println("Message: " + message.getPayload());
}
}


上述代码是一个使用Spring WebSocket的示例。通过`WebSocketConfigurer`和`WebSocketHandlerRegistry`接口,我们可以轻松地注册并配置WebSocket处理器。


在使用Spring WebSocket时,我们需要添加Spring WebSocket依赖。我们可以通过Maven来管理依赖,添加以下依赖配置:



org.springframework.boot spring-boot-starter-websocket 2.4.0

### 5. 基于Java WebSocket API的聊天应用


我们可以使用Java WebSocket API来构建一个简单的聊天室应用程序。下面是一个使用Java WebSocket API的聊天服务器示例:



@ServerEndpoint(“/chat”)
public class ChatServer {
private static Set sessions = Collections.synchronizedSet(new HashSet<>());

@OnOpen
public void onOpen(Session session) {
    sessions.add(session);
    System.out.println("New connection: " + session.getId());
}

@OnMessage
public void onMessage(String message, Session session) {
    sendMessageToAll("Message from " + session.getId() + ": " + message);
}

@OnClose
public void onClose(Session session) {
    sessions.remove(session);
    System.out.println("Connection closed: " + session.getId());
}

private void sendMessageToAll(String message) {
    for (Session session : sessions) {
        try {
            session.getBasicRemote().sendText(message);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

}


上述代码定义了一个WebSocket服务器,用于处理聊天室中的消息。当有新的连接建立时,`onOpen`方法会被调用,将连接添加到会话列表中。当接收到消息时,`onMessage`方法会将该消息发送给所有连接。当连接关闭时,`onClose`方法会将该连接从会话列表中删除。


在浏览器中,我们可以使用JavaScript的WebSocket API来连接到该聊天服务器:



var socket = new WebSocket(“ws://localhost:8080/chat”);

socket.onopen = function() {
console.log(“Connected to server”);
};

socket.onmessage = function(event) {
console.log("Message received: " + event.data);
};

socket.onclose = function(event) {
console.log(“Connection closed”);
};

function sendMessage() {
var message = document.getElementById(“message”).value;
socket.send(message);
document.getElementById(“message”).value = “”;
}


上述代码连接到聊天服务器,并在接收到新消息时打印在控制台上。通过`sendMessage`函数,我们可以将输入框中的消息发送给聊天服务器。


### 6. 基于Jetty WebSocket的实时股票行情应用


我们可以使用Jetty WebSocket来创建一个实时股票行情应用程序。下面是一个使用Jetty WebSocket的股票服务器示例:



import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
import org.eclipse.jetty.websocket.api.annotations.WebSocket;

import java.util.Random;

@WebSocket
public class StockHandler {
private Session session;
private Random random = new Random();

@OnWebSocketConnect
public void onConnect(Session session) {
    this.session = session;
    System.out.println("New connection: " + session.getRemoteAddress());

    Thread thread = new Thread(() -> {
        try {
            while (true) {
                int price = random.nextInt(100);
                session.getRemote().sendString(String.valueOf(price));
                Thread.sleep(1000); // 每一秒发送一次股价
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    });
    thread.start();
}

@OnWebSocketMessage
public void onMessage(String message) {
    // 不处理客户端发送的消息
}

}


在上述代码中,`onConnect`方法在新连接建立时被调用。我们通过定时线程发送随机生成的股票价格,将其作为实时的股票行情数据。通过`session.getRemote().sendString`方法,我们将股票价格发送给客户端。


在浏览器中,我们可以使用JavaScript的WebSocket API来连接到股票服务器,并在接收到新的股票价格时进行处理。



var socket = new WebSocket(“ws://localhost:8080/stock”);

socket.onopen = function() {
console.log(“Connected to server”);
};

socket.onmessage = function(event) {
var price = event.data;
console.log("Stock price: " + price);
// 在页面上更新股票价格
document.getElementById(“stockPrice”).innerText = price;
};

socket.onclose = function(event) {
console.log(“Connection closed”);
};


上述代码将接收到的股票价格打印在控制台上,并将其更新到页面上显示。


### 7. 基于Spring WebSocket的实时聊天室应用


我们可以使用Spring WebSocket来构建一个实时的聊天室应用程序。下面是一个使用Spring WebSocket的聊天服务器示例:



@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new ChatHandler(), “/chat”).setAllowedOrigins(“*”);
}
}

public class ChatHandler extends TextWebSocketHandler {
private List sessions = new CopyOnWriteArrayList<>();

@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
    System.out.println("New connection: " + session.getRemoteAddress());
    sessions.add(session);
}

@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
    System.out.println("Message: " + message.getPayloadAsString());

    for (WebSocketSession s : sessions) {
        s.sendMessage(message);
    }
}

@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
    System.out.println("Connection closed: " + session.getRemoteAddress());
    sessions.remove(session);
}

}


在上述代码中,`ChatHandler`被定义为WebSocket处理器,用于处理聊天室消息。在连接建立时,`afterConnectionEstablished`方法会被调用,并将新的会话添加到会话列表中。当接收到消息时,`handleTextMessage`方法会将该消息发送给所有的会话。当连接关闭时,`afterConnectionClosed`方法会将该会话从会话列表中删除。


在浏览器中,我们可以使用JavaScript的WebSocket API来连接到聊天服务器,并在接收到新消息时进行处理。



var socket = new WebSocket(“ws://localhost:8080/chat”);

socket.onopen = function() {
console.log(“Connected to server”);
};

socket.onmessage = function(event) {
var message = event.data;
console.log("Message received: " + message);

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

[外链图片转存中…(img-pTH4sqQ1-1715557129197)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值