栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Jetty 9中访问实例化的WebSocket?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Jetty 9中访问实例化的WebSocket?

这里以超级简化的聊天室概念介绍了两种常用技术。

选项#1:让WebSocket将其状态报告回中央位置

@WebSocketpublic class ChatSocket {    public Session session;    @onWebSocketConnect    public void onConnect(Session session) {        this.session = session;        ChatRoom.getInstance().join(this);    }    @onWebSocketMessage    public void onText(String message) {        ChatRoom.getInstance().writeAllMembers("Hello all");    }    @onWebSocketClose    public void onClose(int statusCode, String reason) {        ChatRoom.getInstance().part(this);    }}public class ChatRoom {    private static final ChatRoom INSTANCE = new ChatRoom();    public static ChatRoom getInstance()    {        return INSTANCE;    }    private List<ChatSocket> members = new ArrayList<>();    public void join(ChatSocket socket)     {        members.add(socket);    }    public void part(ChatSocket socket)     {        members.remove(socket);    }    public void writeAllMembers(String message)     {        for(ChatSocket member: members)        { member.session.getRemote().sendStringByFuture(message);        }    }    public void writeSpecificMember(String memberName, String message)     {        ChatSocket member = findMemberByName(memberName);        member.session.getRemote().sendStringByFuture(message);    }    public ChatSocket findMemberByName(String memberName)     {        // left as exercise to reader    }}

然后,只需使用中心位置即可与您选择的websocket通信。

ChatRoom.getInstance().writeSpecificMember("alex", "Hello");// orChatRoom.getInstance().writeAllMembers("Hello all");

选项2:使用WebSocketCreator手动创建WebSocket

@WebSocketpublic class ChatSocket {    public ChatRoom chatroom;    public ChatSocket(ChatRoom chatroom)    {        this.chatroom = chatroom;    }    @onWebSocketConnect    public void onConnect(Session session) {        chatroom.join(this);    }    @onWebSocketMessage    public void onText(String message) {        chatroom.writeAllMembers(message);    }    @onWebSocketClose    public void onClose(int statusCode, String reason) {        chatroom.part(this);    }}public class ChatCreator implements WebSocketCreator{    private ChatRoom chatroom;    public ChatCreator(ChatRoom chatroom)    {        this.chatroom = chatroom;    }    public Object createWebSocket(UpgradeRequest request,  UpgradeResponse response)    {        // We want to create the Chat Socket and associate        // it with our chatroom implementation        return new ChatSocket(chatroom);    }}public class ChatHandler extends WebSocketHandler{    private ChatRoom chatroom = new ChatRoom();    @Override    public void configure(WebSocketServletFactory factory)    {        factory.setCreator(new ChatCreator(chatroom));    }}

此时,您可以使用与上述相同的技术来与您选择的websocket通信。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号