`

websocket

阅读更多
http://haoningabc.iteye.com/blog/2169054 web介绍 web介绍
一、客户端
1.var ws = new WebSocket(“ws://localhost:8080”);
申请一个WebSocket对象,参数是需要连接的服务器端的地址,同http协议使用http://开头一样,WebSocket协议的URL使用ws://开头,另外安全的WebSocket协议使用wss://开头。
ws.send(“hello”);
用于叫消息发送到服务端

2.ws.onopen = function() { console.log(“open”)};
当websocket创建成功时,即会触发onopen事件

3.ws.onmessage = function(evt) { console.log(evt.data) };
当客户端收到服务端发来的消息时,会触发onmessage事件,参数evt.data中包含server传输过来的数据

4.ws.onclose = function(evt) { console.log(“WebSocketClosed!”); };
当客户端收到服务端发送的关闭连接的请求时,触发onclose事件

5.ws.onerror = function(evt) { console.log(“WebSocketError!”); };
如果出现连接,处理,接收,发送数据失败的时候就会触发onerror事件


二、服务端
第一个用于处理websocket请求
第一个类
public class SocketServer extends WebSocketServlet {
    private static final long serialVersionUID = 1L;
    //……
    @Override
    protected StreamInbound createWebSocketInbound(String arg0,
            HttpServletRequest arg1) {
        // TODO Auto-generated method stub
        return new ChatWebSocket(users);
    }
}

这个Servlet继承自WebSocketServlet,实现createWebSocketInbound方法。该方法返回第二个类的实例。

第二个用于处理每一次具体的WebSocket任务
protected void onTextMessage(CharBuffer message) throws IOException { }
文本消息响应
protected void onBinaryMessage(ByteBuffer arg0) throws IOException { }
二进制消息响应
protected void onOpen(WsOutbound outbound) { }
建立连接的触发的事件
protected void onClose(int status) { }
关闭连接时触发的事件



客户端代码
/opt/apache-tomcat-7.0.62/webapps/websocket
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>      
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">      
<title>Insert title here</title>      
</head>  
<script type="text/javascript">      
    var ws = null;    
    function log(text) {    
       document.getElementById("log").innerHTML = text +'\n'+document.getElementById("log").innerHTML;    
    }      
    function startServer() {      
      //  var url = document.getElementById("serverip").value;// "ws://192.168.0.102:8887"; 
        var url ="ws://192.168.137.29:8088/websocket/websocket/test";
        if ('WebSocket' in window) {      
            ws = new WebSocket(url);      
        } else if ('MozWebSocket' in window) {      
            ws = new MozWebSocket(url);      
        } else {      
            alert('浏览器不支持');      
            return;    
        }      
        ws.onopen = function() {      
            alert('Opened!');      
        };      
        // 收到服务器发送的文本消息, event.data表示文本内容      
        ws.onmessage = function(event) {      
            alert('Receive message: ' + event.data);     
            log('Receive message: ' + event.data);     
        };      
        ws.onclose = function() {      
          alert('Closed!');      
        };      
        
    }



服务端代码
package testwebsocket;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.util.ArrayList;  
import javax.servlet.http.HttpServletRequest;  
import org.apache.catalina.websocket.MessageInbound;  
import org.apache.catalina.websocket.StreamInbound;  
import org.apache.catalina.websocket.WebSocketServlet;  
import org.apache.catalina.websocket.WsOutbound;  
  
public class HelloWorldWebSocketServlet extends WebSocketServlet {  
    private static ArrayList mmiList  = new ArrayList();  
  
    protected StreamInbound createWebSocketInbound(String subProtocol,  
            HttpServletRequest arg1) {  
        return new MyMessageInbound();  
    }  
  
    private class MyMessageInbound extends MessageInbound {  
        WsOutbound myoutbound;  
  
        @Override  
        public void onOpen(WsOutbound outbound) {  
            try {  
                System.out.println("Open Client.");  
                this.myoutbound = outbound;  
            //    mmiList .add(this);  
                outbound.writeTextMessage(CharBuffer.wrap("Hello!"));  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
  
        @Override  
        public void onClose(int status) {  
            System.out.println("Close Client.");  
           // mmiList .remove(this);  
        }  
  
        @Override  
        protected void onBinaryMessage(ByteBuffer arg0) throws IOException {  
            // TODO Auto-generated method stub    
  
        }  
  
        @Override  
        protected void onTextMessage(CharBuffer message) throws IOException {  
            // TODO Auto-generated method stub    
            System.out.println("onText--->" + message.toString());  
         //   MyMessageInbound mmib = (MyMessageInbound) outbound;  
            CharBuffer buffer = CharBuffer.wrap(message);  
            System.out.println("onText---ssss>" + message.toString());
            myoutbound.writeTextMessage(buffer);  
            System.out.println("onText---dddd>" + message.toString());
            myoutbound.flush();   
  
        }  
    }  
}





完整的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>

  <servlet>  
      <servlet-name>hello</servlet-name>  
      <servlet-class>com.HelloWorldWebSocketServlet</servlet-class>  
    </servlet>  
    <servlet-mapping>  
      <servlet-name>hello</servlet-name>  
      <url-pattern>/websocket/test</url-pattern>  
    </servlet-mapping>
</web-app>

分享到:
评论

相关推荐

    MFC websocket server | MFC websocket服务器

    WebSocket是一种在客户端和服务器之间建立持久连接的网络协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输。MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于构建Windows应用程序...

    C#实现WebSocket协议客户端和服务器websocket sharp组件实例解析

    WebSocket Sharp 是一个C#实现的WebSocket协议库,它支持客户端和服务端的功能,符合RFC 6455标准。这个组件不仅提供了基本的WebSocket连接管理,还包含了一些高级特性,如消息压缩、安全连接、HTTP身份验证、代理...

    c# winform快速建websocket客户端源码 wpf快速搭建websocket客户端 c#简单建立websocket

    c# winform快速建websocket客户端源码 wpf快速搭建websocket客户端 c#简单建立websocket客户端 websocket快速简单搭建客户端 websocket客户端实现 在C# WinForm应用程序中快速构建WebSocket客户端,是一种实现实时...

    DelphiWebsockets-master.zip_delphi websocket_websocket_websocket

    在Delphi编程环境中,WebSocket技术可以极大地提升应用程序的交互性和实时性,尤其是在开发需要实时数据更新的桌面或移动应用时。 DelphiWebsockets-master.zip是一个包含Delphi WebSocket实现的项目资源压缩包。这...

    WebSocket消息实时提醒

    WebSocket是一种在客户端和服务器之间建立持久连接的网络协议,它为双向通信提供了低延迟、高效率的解决方案。在传统的HTTP协议下,客户端与服务器之间的通信是请求-响应模式,即客户端发起请求,服务器响应,然后...

    若依WebSocket集成

    WebSocket是一种在客户端和服务器之间建立长连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在若依框架中集成WebSocket,可以为用户带来更流畅、即时的交互体验,尤其...

    websocket断线重连 websocket JS框架

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在Web应用中,WebSocket为开发者提供了实时交互的能力,常用于在线聊天...

    C语言实现的websocket

    WebSocket是一种在客户端和服务器之间建立持久连接的网络通信协议,它允许双向通信,即服务器和客户端都可以主动发送数据。在Web开发中,WebSocket为实时应用提供了高效、低延迟的解决方案,比如在线聊天、股票交易...

    html页面测试websocket

    WebSocket是Web应用中一种在客户端和服务器之间建立长连接的协议,它允许双方进行全双工通信,极大地提高了数据传输效率。在这个“html页面测试websocket”的项目中,我们可以看到几个关键文件:`index.html`、`...

    Okhttp实现websocket链接

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输。OkHttp是一个高效的HTTP客户端库,它可以用来创建WebSocket连接。本篇文章将详细介绍如何利用...

    简单实现了websocket功能:websocket客户端、winformsocket客户端

    WebSocket是一种在客户端与服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在本项目中,"简单实现了websocket功能:websocket客户端、winform...

    Spring+Netty+WebSocket实例

    在现代Web开发中,实时通信已经成为一个不可或缺的功能,Spring、Netty和WebSocket的结合为构建高性能、低延迟的实时应用提供了强大的解决方案。本实例将详细探讨如何利用这三种技术进行集成,实现高效的双向通信。 ...

    ubuntu lighttpd实现websocket

    1、下载mongoose使用mongoose中的example中的websocket_chat,实现websocket 2、websocket_chat源码下载路径 官网:https://cesanta.com 论坛:https://forum.mongoose-os.com/index.php?p=/categories/mongoose ...

    websocket-sharp 范例

    WebSocketSharp是一个针对C#开发的开源库,它允许开发者在.NET Framework 4.0和3.5环境下构建WebSocket服务和客户端。WebSocket协议是一种在互联网上实时通信(RTC)的技术,它提供了一种低延迟、全双工的通信机制,...

    websocket测试工具,网络助手

    WebSocket测试工具,如"WebSocketMan-v1.0.9-win32",是专为开发者设计的,用于调试、测试和分析WebSocket服务器和客户端的性能及功能。 WebSocket协议的核心特性: 1. **持久连接**:WebSocket建立连接后,服务器...

    websocket-fmp4、websocket-flv 视频播放器 web端 wsplayer

    WebSocket-FMP4与WebSocket-FLV视频播放器在Web端的应用是现代互联网实时通信技术的重要实践,其中wsplayer是一款常见的实现此类功能的播放器。本文将深入探讨WebSocket协议、FMP4与FLV格式以及wsplayer播放器的相关...

    spring+websocketdemo

    WebSocket是Web交互技术的一种革新,它为实时双向通信提供了标准协议。在传统的HTTP协议中,客户端与服务器之间的通信是请求-响应模式,而WebSocket则允许持久连接,使得数据可以双向实时传输,极大地优化了实时应用...

    c# winform快速建websocket服务器源码 wpf快速搭建websocket服务

    c# winform快速建websocket服务器源码 wpf快速搭建websocket服务 c#简单建立websocket服务 websocket快速搭建 随着互联网技术的飞速发展,实时交互和数据推送已成为众多应用的核心需求。传统的HTTP协议,基于请求-...

    MFC实现WebSocket通信

    WebSocket是一种在客户端和服务器之间建立持久连接的网络通信协议,它允许双向实时数据传输,极大地提高了Web应用的性能。在本项目中,我们将利用Microsoft Foundation Classes (MFC) 框架,用C++编程语言在Visual ...

Global site tag (gtag.js) - Google Analytics