Spring-boot-starter-websocket入門
3654 ワード
理解1一部のブラウザがサポートしていないか、または一部の制限エージェントがhttpプロトコルがwebsocketを開くことを阻止することができる.Websocketが開きすぎると自動的に閉じる可能性があるため、Spring FrameworkはSockJSプロトコルに基づく透明なバックアップスキームを提供しています.これらのシナリオは、アプリケーションを変更する必要がなく、構成によって有効にできます.
2 Spring Framework 4は、Message、Messaging、MessagingなどのSpring Integrationプロジェクトの重要な抽象を含む新しいspring-messagingモジュールを含み、このようなメッセージアーキテクチャの基礎とすることができる.このモジュールはまた、Spring MVC注釈に基づくプログラミングモデルと同様に、メッセージを方法にマッピングするための注釈のセットを含む.
バックエンド実装:
@ServerEndpoint("/WebSocketServer")
public class ServerEndPoint808
{
@OnOpen
public void start(Sessionsession)
{
System.out.println(「接続成功! "+session.getId());
}
@OnMessage
public void reMessage(Session session, Stringstr)
{
try
{
session.getBasicRemote().sendText(str+ "who areyou");
}
catch (IOExceptione)
{
e.printStackTrace();
}
}
@OnError
public void error(Session session, Throwablet){t.printStackTrace();}
@OnClose
public void close(){}
このクラスはWebSocketのサービス・エンドとして、@ServerEndpoint(「/push」)のannotationコメント・エンド・ポイントは、ws:/[ServerEnd IPまたはドメイン名]:[ServerPort]/プロジェクト/WebSocketServerのアクセス・エンド・ポイントでWebSocketサービス・エンドを実行することを示します(このクラスには共通の非パラメトリック関数が必要です).
注意事項:@serverendpoint valueが必須パラメータsubprotocols encoder decoder configurator(後の3つはすべてインタフェースを継承または実装し、完全なクラス名をパラメータ値とする)
1つのエンドポイントクラスでは、最大3つのメソッドに@OnMessage注記を付けることができます.
Websocketのプロトコルは、Httpプロトコルとは異なるため、セッションを直接取得できない@websistenerクラス実装サーブレットRequestListenerインタフェース書き換えmodifyHandshakeメソッド「((HttpサーブレットRequest)sre.getサーブレットRequest().getSession()」を追加できます.
If you have to send messages thatare not responses, store the Session object as an instance variableof the endpoint class in the method annotated with@OnOpen
sessionはbasicとasyncの2種類のremote変数を再呼び出して変数のsendObjectメソッドを呼び出してデータを送信することができます
フロントエンドの実装:
参照先:
http://www.cnblogs.com/best/archive/2016/09/12/5695570.html
https://blog.csdn.net/zlxls/article/details/78504591
https://blog.csdn.net/zilaike/article/details/78227810
以上、オリジナルのWebSocketを使用しています
stompがサポートするwebsocket:
https://www.cnblogs.com/myitroad/p/www.cnblogs.com/myitroad/p/9334141.html
https://www.cnblogs.com/GoodHelper/p/7078381.html
http://blog.geekidentity.com/spring/spring_websocket_translation/
2 Spring Framework 4は、Message、Messaging、MessagingなどのSpring Integrationプロジェクトの重要な抽象を含む新しいspring-messagingモジュールを含み、このようなメッセージアーキテクチャの基礎とすることができる.このモジュールはまた、Spring MVC注釈に基づくプログラミングモデルと同様に、メッセージを方法にマッピングするための注釈のセットを含む.
バックエンド実装:
@ServerEndpoint("/WebSocketServer")
public class ServerEndPoint808
{
@OnOpen
public void start(Sessionsession)
{
System.out.println(「接続成功! "+session.getId());
}
@OnMessage
public void reMessage(Session session, Stringstr)
{
try
{
session.getBasicRemote().sendText(str+ "who areyou");
}
catch (IOExceptione)
{
e.printStackTrace();
}
}
@OnError
public void error(Session session, Throwablet){t.printStackTrace();}
@OnClose
public void close(){}
このクラスはWebSocketのサービス・エンドとして、@ServerEndpoint(「/push」)のannotationコメント・エンド・ポイントは、ws:/[ServerEnd IPまたはドメイン名]:[ServerPort]/プロジェクト/WebSocketServerのアクセス・エンド・ポイントでWebSocketサービス・エンドを実行することを示します(このクラスには共通の非パラメトリック関数が必要です).
注意事項:@serverendpoint valueが必須パラメータsubprotocols encoder decoder configurator(後の3つはすべてインタフェースを継承または実装し、完全なクラス名をパラメータ値とする)
1つのエンドポイントクラスでは、最大3つのメソッドに@OnMessage注記を付けることができます.
Websocketのプロトコルは、Httpプロトコルとは異なるため、セッションを直接取得できない@websistenerクラス実装サーブレットRequestListenerインタフェース書き換えmodifyHandshakeメソッド「((HttpサーブレットRequest)sre.getサーブレットRequest().getSession()」を追加できます.
If you have to send messages thatare not responses, store the Session object as an instance variableof the endpoint class in the method annotated with@OnOpen
sessionはbasicとasyncの2種類のremote変数を再呼び出して変数のsendObjectメソッドを呼び出してデータを送信することができます
フロントエンドの実装:
var socket;
if(typeof(WebSocket) == "undefined") {
alert(" WebSocket");
return;
}
$("#btnConnection").click(function() {
// WebSocket ,
socket = new WebSocket("ws://192.168.1.2:8888");
//
socket.onopen = function() {
alert("Socket ");
//socket.send(" " + location.href + new Date());
};
//
socket.onmessage = function(msg) {
alert(msg.data);
};
//
socket.onclose = function() {
alert("Socket ");
};
//
socket.onerror = function() {
alert(" ");
}
});
//
$("#btnSend").click(function() {
socket.send(" " + location.href + new Date());
});
//
$("#btnClose").click(function() {
socket.close();
});
参照先:
http://www.cnblogs.com/best/archive/2016/09/12/5695570.html
https://blog.csdn.net/zlxls/article/details/78504591
https://blog.csdn.net/zilaike/article/details/78227810
以上、オリジナルのWebSocketを使用しています
stompがサポートするwebsocket:
https://www.cnblogs.com/myitroad/p/www.cnblogs.com/myitroad/p/9334141.html
https://www.cnblogs.com/GoodHelper/p/7078381.html
http://blog.geekidentity.com/spring/spring_websocket_translation/