サーバープッシュ——PushLetの応用
詳細
背景:最近、会社は1つの設備の監視の方面のプロジェクトをする必要があって、フロントはExtJsを採用して、バックグラウンドはSSHフレームワーク+SNMP技術を採用して実現します.しかし、設備モニタリングでは、バックグラウンドでリアルタイムにページと情報伝達を行う必要があることが多いため、普段はフロントからバックグラウンドにリクエストを送信し、情報を取得しただけで、バックグラウンドからフロントにメッセージを送信したことはありません.度娘、谷兄に聞くしかなくて、“サーバーのプッシュ技術”を知って、更にPushLetのこの東を知って、それからネット上で資料をかき集めることを始めて、しかしネット上の資料はすべてあまり悪くなくて、例は普遍的にIMの即時チャットの実現に似ています.それでも、これらの資料は私に大きな助けを与えてくれて、ここでそれらの資料の貢献者に感謝します(オリジナルでも転載者でも^^)!
よし、くだらないことは言わないで、翠花、前の例!
Step 1まずpushlet開発パッケージを取得する
http://sourceforge.net/projects/pushlets/files/pushlets/2.0.4/pushlet-2.0.4.zip/download
ダウンロードして解凍し、libの下のpushletを取得します.jar pushletclient.JAr、およびwebappspushletWEB-INFclasses下のlog 4 j.properties pushlet.properties sources.properties.
Step-2 srcディレクトリにlog 4 jを追加する.properties、pushlet.properties、 sources.properties、後でsourcesをpropertiesは変更と構成を行います.
Step-3 Webの構成xmlはWeb.xmlには次の内容が含まれています.
Step-4独自のイベントソースを作成する
Step-5上に入れるsources.propertiesでのイベントソースの構成
元の構成は以下の通りです(htmlコードではありません):
削除またはコメントを削除し、自分のイベントソースに追加します(htmlコードではありません).
Step-6 indexを作成する.jspページは次のとおりです.
注意:pushletのjsスクリプト(ajax-pushlet-client.js)を導入する必要があります.
その中で重要なのはこのJavaScriptコード、PL.Init()、PL.joinListen(""")は固定用法であり、必ず書かなければならず、順序が固定されている.joinListenの「文字列」は、カスタムイベントソースのcreateDataEventの「文字列」に対応し、function onData(event)メソッドも固定用法、pushletスクリプトのページ応答関数をカスタマイズします.
それ以来、プロジェクトをコンパイル、配置し、ブラウザでそのプロジェクトにアクセスし、バックグラウンドJavaプログラムは3秒おきにindexに向かう.jspはメッセージを1回プッシュします.
参照先:http://edwin492.iteye.com/blog/1124751
個人情報:
1、関連資料の貢献者に対する尊重を表すために、転載、参考内容はすべて特殊な説明があり、出典【URL】を添付する.
2、知識面、技術能力が限られているため、内容は主に応用に向いており、原理性についての紹介はあまりありません.
また、正しい点がなければ、多くのネットユーザーの「友好」の指摘を望んでいると述べた.
PushLet_A.rar (16.9 KB) 説明:ソースコード(MyEclipseのインポートが利用可能) ダウンロード回数:166
背景:最近、会社は1つの設備の監視の方面のプロジェクトをする必要があって、フロントはExtJsを採用して、バックグラウンドはSSHフレームワーク+SNMP技術を採用して実現します.しかし、設備モニタリングでは、バックグラウンドでリアルタイムにページと情報伝達を行う必要があることが多いため、普段はフロントからバックグラウンドにリクエストを送信し、情報を取得しただけで、バックグラウンドからフロントにメッセージを送信したことはありません.度娘、谷兄に聞くしかなくて、“サーバーのプッシュ技術”を知って、更にPushLetのこの東を知って、それからネット上で資料をかき集めることを始めて、しかしネット上の資料はすべてあまり悪くなくて、例は普遍的にIMの即時チャットの実現に似ています.それでも、これらの資料は私に大きな助けを与えてくれて、ここでそれらの資料の貢献者に感謝します(オリジナルでも転載者でも^^)!
よし、くだらないことは言わないで、翠花、前の例!
Step 1まずpushlet開発パッケージを取得する
http://sourceforge.net/projects/pushlets/files/pushlets/2.0.4/pushlet-2.0.4.zip/download
ダウンロードして解凍し、libの下のpushletを取得します.jar pushletclient.JAr、およびwebappspushletWEB-INFclasses下のlog 4 j.properties pushlet.properties sources.properties.
Step-2 srcディレクトリにlog 4 jを追加する.properties、pushlet.properties、 sources.properties、後でsourcesをpropertiesは変更と構成を行います.
Step-3 Webの構成xmlはWeb.xmlには次の内容が含まれています.
pushlet
nl.justobjects.pushlet.servlet.Pushlet
1
pushlet
/pushlet.srv
Step-4独自のイベントソースを作成する
package com.fornew;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Random;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.EventPullSource;
public class PushLet implements Serializable{
private static final long serialVersionUID = 1L;
static public class PushEvent extends EventPullSource{
public int i = 1;
@Override
protected long getSleepTime() {
return 3000; // (getSleepTime)
}
@Override
// (pullEvent) , pullEvent() , 。
protected Event pullEvent() {
Event event =Event.createDataEvent("/fornew/push"); // jsp " "
StringBuffer str = new StringBuffer(" 【").append(i++).append('】');
str.append(this.getRandomStr());
try {
// , , “ ”
event.setField("hw",new String(str.toString().getBytes("UTF-8"), "ISO-8859-1"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return event;
}
// ,
public String getRandomStr(){
Random random = new Random();
return Math.abs(random.nextInt())+"";
}
}
}
Step-5上に入れるsources.propertiesでのイベントソースの構成
元の構成は以下の通りです(htmlコードではありません):
source1=nl.justobjects.pushlet.test.TestEventPullSources$TemperatureEventPullSource
source2=nl.justobjects.pushlet.test.TestEventPullSources$SystemStatusEventPullSource
source3=nl.justobjects.pushlet.test.TestEventPullSources$PushletStatusEventPullSource
source4=nl.justobjects.pushlet.test.TestEventPullSources$AEXStocksEventPullSource
source5=nl.justobjects.pushlet.test.TestEventPullSources$WebPresentationEventPullSource
source6=nl.justobjects.pushlet.test.TestEventPullSources$PingEventPullSource
削除またはコメントを削除し、自分のイベントソースに追加します(htmlコードではありません).
source1=com.fornew.PushLet$PushEvent
Step-6 indexを作成する.jspページは次のとおりです.
PushLet-
PL._init();
PL.joinListen('/fornew/push');
function onData(event){
var str = event.get("hw");
var elId = document.getElementById('wxh');
//
var getColor = function(){
var r = Math.ceil(Math.random()*256).toString(16);
r = r.length==1?'0'+r:r;
return r;
}
var color = '#';
color =(color + getColor() + getColor() + getColor());
// ,
elId.value = str;
elId.style.color=color;
}
注意:pushletのjsスクリプト(ajax-pushlet-client.js)を導入する必要があります.
その中で重要なのはこのJavaScriptコード、PL.Init()、PL.joinListen(""")は固定用法であり、必ず書かなければならず、順序が固定されている.joinListenの「文字列」は、カスタムイベントソースのcreateDataEventの「文字列」に対応し、function onData(event)メソッドも固定用法、pushletスクリプトのページ応答関数をカスタマイズします.
PL._init();
PL.joinListen('/fornew/push');
function onData(event){
var str = event.get("hw");
var elId = document.getElementById('wxh');
//
var getColor = function(){
var r = Math.ceil(Math.random()*256).toString(16);
r = r.length==1?'0'+r:r;
return r;
}
var color = '#';
color =(color + getColor() + getColor() + getColor());
//
elId.value = str;
elId.style.color=color;
}
それ以来、プロジェクトをコンパイル、配置し、ブラウザでそのプロジェクトにアクセスし、バックグラウンドJavaプログラムは3秒おきにindexに向かう.jspはメッセージを1回プッシュします.
参照先:http://edwin492.iteye.com/blog/1124751
個人情報:
1、関連資料の貢献者に対する尊重を表すために、転載、参考内容はすべて特殊な説明があり、出典【URL】を添付する.
2、知識面、技術能力が限られているため、内容は主に応用に向いており、原理性についての紹介はあまりありません.
また、正しい点がなければ、多くのネットユーザーの「友好」の指摘を望んでいると述べた.