基於WebSocket的實時通訊開發步驟(含原始碼)

花田土著發表於2016-01-02
  如果你能搜到這篇文章,說明你對WebSocket已經有所瞭解。在此就不作贅述。

1、準備好一個ssm或者ssh框架專案,最好是使用maven管理的

本文以ssm為例。

2、配置pom.xml檔案:

主要為了引入支援websocket的spring4 jar包。

3、編寫你的WebSocket:

主要包括三部分:WebSocketConfig(注入處理器)-->MyHandler(開發自定義功能)-->MyHandshakeInterceptor(攔截器),(可參考官網提供的例項程式碼)

4、spring檔案(applicationContext.xml、spring-mvc.xml、web.xml)配置,採用自動注入方式。

此步為難點所在:網上有好N種寫法,2個配置檔案組合就有N的平方種寫法。經過多次試驗,終於保證了webSocket與Controller同時註冊成功。所以,可行的方法不僅限於本文提供的這種。

5、建立連線:

由介面中的sockjs呼叫,詳情見原始碼。(注:假如你的sockjs建立連線等內容寫在main.jsp,那麼一旦跳轉離開該介面,webSocket連線會自動斷開,為了避免反覆連線帶來一些不必要的麻煩。本例將sockjs連線功能寫在了一個介面的同時,在該介面內新增iframe,讓iframe中的介面去跳轉。)

6、傳送訊息:

在自己的controller中注入webSocket的處理器,使用其中的方法即可。
    @Autowired
    MyHandler myHandler;

    @RequestMapping("/tt")
    public String sendMsgToUser(HttpServletRequest request){
        String msg = "2016,與你相遇,猴幸運!";
        String userCd = (String) request.getSession().getAttribute("USER_CD");
        myHandler.sendMessageToUser(userCd, new TextMessage(msg));
        return "redirect:/web";
    }

本專案原始碼已放在github上:https://github.com/chenhongen…,且程式碼中有所註釋,本文只為操作嚮導,不貼上大量程式碼以亂視聽。

當然,在你匯入原始碼實際開發後必不可少會產生進一步問題,歡迎交流(qq:251601797)。

本例剝離至本人15年畢設,時隔8個月,重新實操遇到了不少問題,所以希望大家有一點小小“成果”之類的都能及時記錄。

參考文獻:
官方(純英文):http://docs.spring.io/spring/…
Spring+Websocket實現訊息的推送:http://my.oschina.net/ldl1232…

相關文章