В этой статье используется конкретный код Java WebSocket для реализации функции Push CHAT Message для вашей ссылки. Конкретный контент заключается в следующем
среда:
JDK.1.7.0_51
Apache-Tomcat-7.0.53
Java Jar Package: Tomcat-coyote.jar, Tomcat-juli.jar, websocket-api.jar
Сообщение Chatannotation Отправка класса:
Импорт java.io.ioexception; import java.util.hashmap; import java.util.map; импорт java.util.concurrent.atomic.atomicinteger; Импорт javax.websocket.onclose; import javax.websocket.onerror; import javax.websocket.onmessage; import javax.websocket.onopen; импорт javax.websocket.session; импорт javax.websocket.server.serverendpoint; импорт org.apache.logging.log. org.apache.juli.logging.logfactory; импорт com.util.htmlfilter; /*** Сообщение WebSocket Push Class* @Author Hu Hansan** 2014-11-18 7:53:13 PM*/ @ServerEndPoint (value = "/webSocket/Chat") Общедоступный класс {private Static final log = logfactory.getLog (Chatannotation.class); Частная статическая финальная строка Guest_prefix = "Гость"; Частный статический конечный AtomicInteger Connectionids = new Atomicinteger (0); Частная статическая конечная карта <строка, объект> connections = new Hashmap <String, Object> (); частная финальная строка прозвище; частная сессия; public Chatannotation () {Nickname = guest_prefix + connectionIds.getandIncrement (); } @Onopen public void Start (Session Session) {this.session = session; Connections.put (прозвище, это); String message = string.format ("* %s %s", псевдоним "присоединился."); вещание (сообщение); } @Onclose public void end () {connections.remove (this); String message = string.format ("* %s %s", псевдоним "имеет отключение."); вещание (сообщение); } / *** Сообщение Отправка метода триггера* @param Message* / @onmessage public void вход (строковое сообщение) {// Никогда не доверяйте клиентской строке filteredmessage = string.format (" %s: %s", никнам, htmlfilter.filter (message.tostring ())); трансляция (FilteredMessage); } @Onerror public void onerror (Throwable T) бросает Throwable {log.error ("Ошибка чата:" + t.toString (), t); } / *** Метод отправки сообщения* @param msg* / private static void Broadcast (String msg) {if (msg.indexof ("geagy0")! =-1) {senduser (msg); } else {sendall (msg); }} / *** Отправить всем пользователям* @param msg* / public static void sendall (string msg) {for (string key: connections.keyset ()) {Chatannotation client = null; try {client = (Chatannotation) connections.get (key); Synchronized (client) {client.session.getBasicRemote (). SendText (msg); }} catch (ioException e) {log.debug ("Ошибка чата: не удалось отправить сообщение клиенту", e); Connections.remove (клиент); try {client.session.close (); } catch (ioException e1) {// Игнорировать} string message = string.format ("* %s %s", client.nickname "был отключен."); вещание (сообщение); }}} / *** Отправить сообщение указанному пользователю* @param msg* / public static void senduser (String msg) {Chatannotation c = (Chatannotation) Connections.get ("guest0"); try {c.session.getBasicRemote (). SendText (msg); } catch (ioException e) {log.debug ("Ошибка чата: не удалось отправить сообщение клиенту", e); Connections.remove (c); try {c.session.close (); } catch (ioException e1) {// Игнорировать} string message = string.format ("* %s %s", c.nickname "был отключен."); вещание (сообщение); }}}HTMLFilter Tool Class:
/*** HTML Tool Class** @author Hu Hansan*/public final Class htmlfilter {public Static String Filter (String Message) {if (сообщение == null) return (null); CHAR Content [] = new char [message.length ()]; message.getChars (0, message.length (), content, 0); StringBuilder result = new StringBuilder (content.length + 50); for (int i = 0; i <content.length; i ++) {switch (content [i]) {case '<': result.append ("<"); перерыв; case '>': result.append (">"); перерыв; case '&': result.append ("&"); перерыв; case '' '': result.append ("" ""); перерыв; по умолчанию: result.append (content [i]); }} return (result.toString ()); }}страница:
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%string path = request.getContextPath (); string basePath = request.getScheme ()+": //"+request.getServername ()+":"+request.getSerport () Path+"/"/". Encoding = "UTF-8"?> <html xmlns = "http://www.w3.org/1999/xhtml" xml: lang = "en"> <Head> test </title> <стиль тип = "text/css"> input #width: 410px} # # #console-contain #widthtain. } #console {border: 1px solid #cccccc; граница правый цвет: #99999; пограничный цвет цвета: #99999; Высота: 170px; Overflow-y: прокрутка; Заполнение: 5px; Ширина: 100%; } #console p {padding: 0; поля: 0; } </style> <script type = "text/javascript"> var Chat = {}; Chat.socket = null; CHAT.connect = (function (host) {if ('websocket' in window) {chat.socket = new WebSocket (host);} else if ('mozwebsocket' in window) {чат.socket = new mozwebsocket (host);} else {console.log ('error: websocket не поддерживается этим browser.'); Консоль закрыто. '); Chat.initialize = function () {if (window.location.protocol == 'http:') {chat.connect ('ws: //' + window.location.host + '/socket2/websocket/chat'); } else {chat.connect ('wss: //' + window.location.host + '/socket2/websocket/cat'); }}; Chat.sendmessage = (function () {var message = document.getelementbyid ('chat'). Value; if (message! = '') {Chat.socket.send (сообщение); document.getElementById ('Chat'). Value = '';}}); var console = {}; Console.log = (function (message) {var console = document.getElementById ('console'); var p = document.createElement ('p'); p.style.wordwrap = 'break-word'; p.innerhtml = сообщение; console.appendchild (p); Console.RemoveChild (Console.firstchild); Чат.initialize (); document.addeventlistener ("domcontentloaded", function () {// Удалить элементы с помощью "noscript" class - <noscript> не допускается в xhtml var noscripts = document.getelementsbyclassname ("noscript"); for (var i = 0; i <noscripts.length; noscripts [i] .parentnode.removechild (noscripts [i]); </script> </head> <body> <div> <h2 style = "color: #ff0000"> кажется, что ваш браузер не поддерживает JavaScript! Веб -питания полагаются на включение JavaScript. Пожалуйста, включите JavaScript и перезагрузите эту страницу! </H2> </div> <div> <p> <input type = "text" Placeholder = "Пожалуйста, введите Content" id = "cat"/> </p> <div id = "Консоль-container"> <div id = "Консоль"/> </div> </div> </body> </html> Вы можете указать, чтобы отправить его определенному пользователю, или вы можете отправить все это. Для получения подробной информации см. Метод трансляции класса Chatannotation.
При публикации программы не забудьте удалить три пакета JAR: Tomcat-coyote.jar, Tomcat-Juli.jar и WebSocket-Api.jar и запустите Tomcat.
Скриншот программы, пользователь Guest0 отправляет информацию, выносит суждения в фоновом режиме и только отправляет ее себе:
Гость1:
Гость2:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.