打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Jetty9 中 websocket 做较大的改动,更合理

最近小弟在用websocket做WEB聊天应用,目前为止,支持离线消息等,感觉还行,不过很蛋疼的是文件传输和语音视频等就麻烦了啊!!!好了,言规正传,下面介绍下在Jetty官网上看到的新闻消息,额,,,小弟英文不好,就不翻译了啊,只大概介绍下,如有错误,还启望指正,此举意在有兴趣的一起探讨下,勿喷!

    首先,9.x与8.x在websocket的构建上都比较容易,如果只是简单的应用,那么在jetty8.x上只需要一个websocketservlet和一个实现了onTextMessage(或另外一个接口)接口的类就可以了。不过到了9.x有了一点改动,与以前相比,我认为更合理,同样它需要一个websocketservlet,但实现的接口与之前不一样了,是实现了WebSocketListener这样一个接口,废话少话,下面给官网的demo吧:

    

01package examples;
02  
03import org.eclipse.jetty.websocket.server.WebSocketServerFactory;
04import org.eclipse.jetty.websocket.server.WebSocketServlet;
05  
06public class MyEchoServlet extends WebSocketServlet
07{
08    @Override
09    public void configure(WebSocketServerFactory factory)
10    {
11        // register a socket class as default
12        factory.register(MyEchoSocket.class);
13    }
14}

 

下面再是websocket的接口实现类:

 

01package examples;
02  
03import java.io.IOException;
04  
05import org.eclipse.jetty.util.Callback;
06import org.eclipse.jetty.util.FutureCallback;
07import org.eclipse.jetty.websocket.core.api.WebSocketConnection;
08import org.eclipse.jetty.websocket.core.api.WebSocketException;
09import org.eclipse.jetty.websocket.core.api.WebSocketListener;
10  
11public class MyEchoSocket implements WebSocketListener
12{
13    private WebSocketConnection outbound;
14  
15    @Override
16    public void onWebSocketBinary(byte[] payload, int offset,
17                                  int len)
18    {
19        /* only interested in text messages */
20    }
21  
22    @Override
23    public void onWebSocketClose(int statusCode, String reason)
24    {
25        this.outbound = null;
26    }
27  
28    @Override
29    public void onWebSocketConnect(WebSocketConnection connection)
30    {
31        this.outbound = connection;
32    }
33  
34    @Override
35    public void onWebSocketException(WebSocketException error)
36    {
37        error.printStackTrace();
38    }
39  
40    @Override
41    public void onWebSocketText(String message)
42    {
43        if (outbound == null)
44        {
45            return;
46        }
47  
48        try
49        {
50            String context = null;
51            Callback callback = new FutureCallback<>();
52            outbound.write(context,callback,message);
53        }
54        catch (IOException e)
55        {
56            e.printStackTrace();
57        }
58    }
59}

 

这样的话当客户端发送普通文本消息就会走onSocketText方法,当发送二进制文件时就会走onWebSocketBinary,感觉这样开发起来更方便,更好,比如,客户端发送了语音消息就自动走onWebSocketBinary方法,发送文本消息就自动 走onSocketText方法,对我们开发人员来说更容易处理。当然除了实现接口,还有其它的方法,继续一个WebSocketAdapter类,有点像GUI编程里面的监听器和监听器实现类,呵呵。。。这种继续方式就不多做介绍了,有兴趣的就一起看下吧。呵呵。。。这是介绍地址:http://webtide.intalio.com/2012/10/jetty-9-updated-websocket-api/

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Jetty WebSocket Server
Android Development with OpenCV
使用JavaWeb webSocket实现简易的点对点聊天功能实例代码
[Playframework文档中文翻译]Play!中使用HTTP异步编程
springmvc+websocket 简单实现消息即时推送
使用C++ 实现的 websocket 客户端 (基于easywsclient)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服