Knowledge Map
웹소켓 채팅 소스 본문
아래 소스는 웹소켓을 이용한 멀티 채팅 소스이다.
출처 : http://choiyb2.tistory.com/81
자바
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package 프로젝트명; import java.io.IOException; import java.util.Collections; import java.util.HashSet; import java.util.Set; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; // 아래 주소로 웹소켓이 연결된다. @ServerEndpoint("/broadcasting") public class Broadsocket { private static Set<Session> clients = Collections .synchronizedSet(new HashSet<Session>()); @OnMessage public void onMessage(String message, Session session) throws IOException { //check message System.out.println(message); synchronized (clients) { // Iterate over the connected sessions // and broadcast the received message for (Session client : clients) { if (!client.equals(session)) { client.getBasicRemote().sendText(message); } } } @OnOpen public void onOpen(Session session) { // Add session to the connected sessions set System.out.println(session); clients.add(session); } @OnClose public void onClose(Session session) { // Remove session from the connected sessions set clients.remove(session); } } | cs |
HTML (& JS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Testing websockets</title> </head> <body> <fieldset> <textarea id="messageWindow" rows="10" cols="50" readonly="true"></textarea> <br/> <input id="inputMessage" type="text"/> <input type="submit" value="send" onclick="send()" /> </fieldset> </body> <script type="text/javascript"> var textarea = document.getElementById("messageWindow"); //프로젝트명 밑의 자바파일 @ServerEndpoint(/boradcasting )으로 간다. var webSocket = new WebSocket('ws://localhost:8080/프로젝트명/broadcasting'); var inputMessage = document.getElementById('inputMessage'); webSocket.onerror = function(event) { onError(event) }; webSocket.onopen = function(event) { onOpen(event) }; //채팅 텍스트를 상대로부터 받음 webSocket.onmessage = function(event) { onMessage(event) }; //받은 메세지를 화면에 출력 function onMessage(event) { textarea.value += "상대 : " + event.data + "\n"; } function onOpen(event) { textarea.value += "연결 성공\n"; } function onError(event) { alert(event.data); } //채팅 텍스트를 상대에게 보냄 function send() { textarea.value += "나 : " + inputMessage.value + "\n"; webSocket.send(inputMessage.value); inputMessage.value = ""; } </script> </html> | cs |
'WEB' 카테고리의 다른 글
no java virtual machine found in folder (톰캣) (0) | 2016.12.19 |
---|---|
grunt 에러 Fatal error: Cannot read property 'contents' of undefined (0) | 2016.11.19 |
IE7,8,9 관련 코드 (0) | 2016.07.30 |
Visual Studio Code FTP 플러그인 (0) | 2016.07.27 |
일부모바일 a태그 문제 (0) | 2016.07.11 |
Comments