WebSocketチャットプログラム|簡単チャット
最終的には、この機能を「航空と非工事」に挿入します.そのため、他の設定を含まずに公共の部分だけを記録します.
SocketHandlerクラスの作成 TextWebSocketHandler:HandleTextMessageを実行し、メッセージタイプに応じてHandleBinaryMessageまたはHandleTextMessageを実行します. HandleTextMessage:メッセージを受信して実行します. afterConnectionEstived:Webソケットに接続するときに動作します. afterConnectionClosed:Webソケット接続が終了したときに動作します. SocketHandler|HandleTextMessageメソッド message.getPayload():メッセージのテキスト値を取得します. wss.sendMessage(new TextMessage(msg)); : msgをテキストメッセージに変換し、セッションMapに格納されているすべてのセッションにメッセージを送信します. SocketHandler|aftConnectionEstiveMethod sessionMap.put(session.getId(), session); : セッションマッピングには、受信したセッションの「ID」(String)と「Web SocketSession」(Web SocketSession)が挿入されます. SocketHandler|aftConnectionClosedメソッド sessionMap.remove(session.getId()); : セッションマッピングからセッションが終了したID(キー)によって削除されます. WebSocketConfigクラスの作成@構成:プロファイルの作成の説明. @EnableWebSocket:ほとんどの場合、Webソケットは自動的に設定されます. chat.jsp|javascriptセクション ws = new WebSocket("ws://"+ location.host + "/chating"); : wsという特殊なプロトコルを使用して、Webソケット接続を作成します. #Reference
https://myhappyman.tistory.com/100
SocketHandlerクラスの作成
@Component
public class SocketHandler extends TextWebSocketHandler {
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) {
//메시지 발송
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
//소켓 연결
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
//소켓 종료
}
}
HashMap<String, WebSocketSession> sessionMap = new HashMap<>();
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) {
//메시지 발송
String msg = message.getPayload();
for(String key : sessionMap.keySet()) {
WebSocketSession wss = sessionMap.get(key);
try {
wss.sendMessage(new TextMessage(msg));
}catch(Exception e) {
e.printStackTrace();
}
}
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
//소켓 연결
super.afterConnectionEstablished(session);
sessionMap.put(session.getId(), session);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
//소켓 종료
sessionMap.remove(session.getId());
super.afterConnectionClosed(session, status);
}
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer{
@Autowired
SocketHandler socketHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(socketHandler, "/chating");
}
}
var ws;
function wsOpen(){
ws = new WebSocket("ws://" + location.host + "/chating");
wsEvt();
}
function wsEvt() {
ws.onopen = function(data){
//소켓이 열리면 초기화 세팅하기
}
ws.onmessage = function(data) {
var msg = data.data;
if(msg != null && msg.trim() != ''){
$("#chating").append("<p>" + msg + "</p>");
}
}
document.addEventListener("keypress", function(e){
if(e.keyCode == 13){ //enter press
send();
}
});
}
function chatName(){
var userName = $("#userName").val();
if(userName == null || userName.trim() == ""){
alert("사용자 이름을 입력해주세요.");
$("#userName").focus();
}else{
wsOpen();
$("#yourName").hide();
$("#yourMsg").show();
}
}
function send() {
var uN = $("#userName").val();
var msg = $("#chatting").val();
ws.send(uN+" : "+msg);
$('#chatting').val("");
}
https://myhappyman.tistory.com/100
Reference
この問題について(WebSocketチャットプログラム|簡単チャット), 我々は、より多くの情報をここで見つけました https://velog.io/@ihj0043/WebSocket-채팅프로그램-단순-채팅テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol