程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 利用webSocket使網頁和服務器通信,websocket通信

利用webSocket使網頁和服務器通信,websocket通信

編輯:JAVA綜合教程

利用webSocket使網頁和服務器通信,websocket通信


WebSocket protocol 是HTML5一種新的協議。它實現了浏覽器與服務器全雙工通信(full-duplex)。具體說明請查閱相關資料,下面我來演示一種簡單的頁面與服務器通信的簡單樣例。

新建個web工程(基於tomcat-7版本(6以下的版本未實現webSocket功能))

引入tomcat/lib目錄下的tomcat7-websocket.jar和websocket-api.jar添加到classpath中

新建WebSocketConfig.java如下

本次采用注解方式

import java.util.Set;

import javax.websocket.Endpoint;
import javax.websocket.server.ServerApplicationConfig;
import javax.websocket.server.ServerEndpointConfig;

public class WebSocketConfig implements ServerApplicationConfig{

    @Override
    public Set<ServerEndpointConfig> getEndpointConfigs(
            Set<Class<? extends Endpoint>> scanned) {
        return null;
    }

    @Override
    public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scanned) {
        //返回scanned
        return scanned;
    }
}

編寫EchoSocket代碼

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/zqq/echo")
public class EchoSocket {
    
    public EchoSocket() {
        super();
    }

    @OnOpen
    public void open(Session session){
        System.out.println("id " + session.getId());
    }
    
    @OnMessage
    public void message(Session session,String msg){
        System.out.println("sessionid " + session.getId() + " : " + msg);
    }

}

此時編寫客戶端echo.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'open.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
<script type="text/javascript">
    var ws;
  //websocket,協議開頭為ws var target = "ws://${pageContext.request.remoteHost}:8080${pageContext.request.contextPath}/zqq/echo"; function subOpen() { if ('WebSocket' in window) { ws = new WebSocket(target); } else if ('MozWebSocket' in window) { ws = new MozWebSocket(target); } else { alert('WebSocket is not supported by this browser.'); return; } ws.onmessage=function(event){ console.info(event.data); console.info(document.getElementById("h1").value); document.getElementById("h1").innerHTML+=event.data+" "; }; } function subSend(){ var text = document.getElementById("input").value; //alert(text); ws.send(text); document.getElementById("input").value=""; } </script> </head> <body> <button onclick="subOpen()">點擊開啟</button><br/> <input id="input"><br/> <button onclick="subSend()">發送</button> </body> </html>

此時將程序部署到tomcat上就可以訪問了,記得要先打開通道,輸入文字就行

第一次寫東西,如有錯誤還請指教,繼續學習中。。。。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved