websocket的helloworld

编程技术  /  houtizong 发布于 3年前   100
ChatClient.java
ChatServer.java
EmptyClient.java
WebSocket.jar
index.html
index.html<!DOCTYPE html><html>  <head>    <title>WebSocket Chat Client</title>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    <script type="text/javascript" src="prototype.js"></script>    <script type="text/javascript">        document.observe("dom:loaded", function() {            function log(text) {                $("log").innerHTML = (new Date).getTime() + ": " + (!Object.isUndefined(text) && text !== null ? text : "null") +"<br>"+ $("log").innerHTML;}            if (!window.WebSocket) {                alert("FATAL: WebSocket not natively supported. This demo will not work!");            }            var ws;            $("uriForm").observe("submit", function(e) {                e.stop();                ws = new WebSocket($F("uri"));                ws.onopen = function() {                    log("[WebSocket#onopen]");                }                ws.onmessage = function(e) {                    log("<b style='color:red;'>[WebSocket#onmessage] 接收消息:" + e.data + "</b>");                }                ws.onclose = function() {                    log("[WebSocket#onclose]");                    $("uri", "connect").invoke("enable");                    $("disconnect").disable();                    ws = null;                }                $("uri", "connect").invoke("disable");                $("disconnect").enable();            });            $("sendForm").observe("submit", function(e) {                e.stop();                if (ws) {                    var textField = $("textField");                    ws.send(textField.value);                    //log("[WebSocket#send] 发送消息:" + textField.value );                    textField.value = "";                    textField.focus();                }            });$("clear").observe("click", function(e) {$("log").innerHTML ='';});            $("disconnect").observe("click", function(e) {                e.stop();                if (ws) {                    ws.close();                    ws = null;                }            });        });    </script>  </head>  <body>      <form id="uriForm"><input type="text" id="uri" value="ws://localhost:8887" style="width:200px;"> <input type="submit" id="connect" value="Connect"><input type="button" id="disconnect" value="Disconnect" disabled="disabled"></form><br>      <form id="sendForm"><input type="text" id="textField" value="" style="width:200px;"> <input type="submit" value="Send"> <input type="button" id='clear' value="clear msg"></form><br>      <form><div id="log" style="width:800px;heigth:450px" ></div></form><br>  </body></html>


EmptyClient.java
import java.net.URI;import org.java_websocket.WebSocketClient;import org.java_websocket.drafts.Draft;import org.java_websocket.handshake.ServerHandshake;public class EmptyClient extends WebSocketClient {public EmptyClient( URI serverUri , Draft draft ) {super( serverUri, draft );}public EmptyClient( URI serverURI ) {super( serverURI );}@Overridepublic void onOpen( ServerHandshake handshakedata ) {}@Overridepublic void onMessage( String message ) {}@Overridepublic void onClose( int code, String reason, boolean remote ) {}@Overridepublic void onError( Exception ex ) {}}

ChatServer.java
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.InetAddress;import java.net.InetSocketAddress;import java.net.UnknownHostException;import java.util.Set;import org.java_websocket.WebSocket;import org.java_websocket.WebSocketServer;import org.java_websocket.handshake.ClientHandshake;public class ChatServer extends WebSocketServer {public ChatServer( int port ) throws UnknownHostException {super( new InetSocketAddress( InetAddress.getByName( "localhost" ), port ) );}public ChatServer( InetSocketAddress address ) {super( address );}@Overridepublic void onOpen( WebSocket conn, ClientHandshake handshake ) {try {this.sendToAll( "new" );} catch ( InterruptedException ex ) {ex.printStackTrace();}System.out.println( conn + " entered the room!" );}@Overridepublic void onClose( WebSocket conn, int code, String reason, boolean remote ) {try {this.sendToAll( conn + " has left the room!" );} catch ( InterruptedException ex ) {ex.printStackTrace();}System.out.println( conn + " has left the room!" );}@Overridepublic void onMessage( WebSocket conn, String message ) {try {this.sendToAll( message );} catch ( InterruptedException ex ) {ex.printStackTrace();}System.out.println( conn + ": " + message );}@Overridepublic void onError( WebSocket conn, Exception ex ) {ex.printStackTrace();}public void sendToAll( String text ) throws InterruptedException {Set<WebSocket> con = connections();synchronized ( con ) {for( WebSocket c : con ) {c.send( text );}}}///////////////////////////////////////////////////////////////////////////////////////public static void main( String[] args ) throws InterruptedException , IOException {//连接部份WebSocket.DEBUG = true;int port = 8887;try {port = Integer.parseInt( args[ 0 ] );} catch ( Exception ex ) { }ChatServer s = new ChatServer( port );s.start();System.out.println( "ChatServer started on port: " + s.getPort() );//服务端 发送消息处理部份BufferedReader sysin = new BufferedReader( new InputStreamReader( System.in ) );while ( true ) {String in = sysin.readLine();s.sendToAll( in );}}}


import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.net.URI;import java.net.URISyntaxException;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import org.java_websocket.WebSocket;import org.java_websocket.WebSocketClient;import org.java_websocket.drafts.Draft;import org.java_websocket.drafts.Draft_10;import org.java_websocket.drafts.Draft_17;import org.java_websocket.drafts.Draft_75;import org.java_websocket.drafts.Draft_76;import org.java_websocket.handshake.ServerHandshake;public class ChatClient extends JFrame implements ActionListener {private static final long serialVersionUID = -6056260699202978657L;private final JTextField uriField;private final JButton connect;private final JButton close;private final JTextArea ta;private final JTextField chatField;private final JComboBox draft;private WebSocketClient cc;public ChatClient( String defaultlocation ) {super( "WebSocket Chat Client" );Container c = getContentPane();GridLayout layout = new GridLayout();layout.setColumns( 1 );layout.setRows( 6 );c.setLayout( layout );Draft[] drafts = { new Draft_17(), new Draft_10(), new Draft_76(), new Draft_75() };draft = new JComboBox( drafts );c.add( draft );uriField = new JTextField();uriField.setText( defaultlocation );c.add( uriField );connect = new JButton( "Connect" );connect.addActionListener( this );c.add( connect );close = new JButton( "Close" );close.addActionListener( this );close.setEnabled( false );c.add( close );JScrollPane scroll = new JScrollPane();ta = new JTextArea();scroll.setViewportView( ta );c.add( scroll );chatField = new JTextField();chatField.setText( "" );chatField.addActionListener( this );c.add( chatField );java.awt.Dimension d = new java.awt.Dimension( 300, 400 );setPreferredSize( d );setSize( d );addWindowListener( new java.awt.event.WindowAdapter() {@Overridepublic void windowClosing( WindowEvent e ) {if( cc != null ) {cc.close();}dispose();}} );setLocationRelativeTo( null );setVisible( true );}public void actionPerformed( ActionEvent e ) {if( e.getSource() == chatField ) {if( cc != null ) {try {cc.send( chatField.getText() );chatField.setText( "" );chatField.requestFocus();} catch ( InterruptedException ex ) {ex.printStackTrace();}}} else if( e.getSource() == connect ) {try {// cc = new ChatClient(new URI(uriField.getText()), area, ( Draft ) draft.getSelectedItem() );cc = new WebSocketClient( new URI( uriField.getText() ), (Draft) draft.getSelectedItem() ) {@Overridepublic void onMessage( String message ) {ta.append( "got: " + message + "\n" );ta.setCaretPosition( ta.getDocument().getLength() );}@Overridepublic void onOpen( ServerHandshake handshake ) {ta.append( "You are connected to ChatServer: " + getURI() + "\n" );ta.setCaretPosition( ta.getDocument().getLength() );}@Overridepublic void onClose( int code, String reason, boolean remote ) {ta.append( "You have been disconnected from: " + getURI() + "; Code: " + code + " " + reason + "\n" );ta.setCaretPosition( ta.getDocument().getLength() );connect.setEnabled( true );uriField.setEditable( true );draft.setEditable( true );close.setEnabled( false );}@Overridepublic void onError( Exception ex ) {ta.append( "Exception occured ...\n" + ex + "\n" );ta.setCaretPosition( ta.getDocument().getLength() );ex.printStackTrace();connect.setEnabled( true );uriField.setEditable( true );draft.setEditable( true );close.setEnabled( false );}};close.setEnabled( true );connect.setEnabled( false );uriField.setEditable( false );draft.setEditable( false );cc.connect();} catch ( URISyntaxException ex ) {ta.append( uriField.getText() + " is not a valid WebSocket URI\n" );}} else if( e.getSource() == close ) {try {cc.close();} catch ( Exception ex ) {ex.printStackTrace();}}}public static void main( String[] args ) {WebSocket.DEBUG = true;String location;if( args.length != 0 ) {location = args[ 0 ];System.out.println( "Default server url specified: \'" + location + "\'" );} else {location = "ws://localhost:8887";System.out.println( "Default server url not specified: defaulting to \'" + location + "\'" );}new ChatClient( location );}}
下一篇:c的urldecode

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客