serverpush実装
3574 ワード
この間、Demoを作るには、リアルタイムのシステムメモリ、CPU、スレッドなどの情報を実現する必要があります.AjaxのPollingを考えて実現しましたが、CPUが高く、頻繁なAjaxアクセスでサーバーが耐えられないことがわかりました.
現在、pushを初歩的に実現するサーバはまだ成熟していない.servlet3.0,Tomcatなどは実現していますが、面倒です.
幸いにも08年にDWRの使用経験があり、DWR 3.0の逆機能で、希望を見せてくれました.彼が実現したタイムリーなチャットについてお話ししましょう.
1.dwrをインポートする.jar
2.servlet構成
3.Javaバックグラウンドクラスを新規作成
4.dwr.の作成xmlプロファイル
5.前段コードの作成
今から複数のブラウザを開いてテストしましょう!!!
現在、pushを初歩的に実現するサーバはまだ成熟していない.servlet3.0,Tomcatなどは実現していますが、面倒です.
幸いにも08年にDWRの使用経験があり、DWR 3.0の逆機能で、希望を見せてくれました.彼が実現したタイムリーなチャットについてお話ししましょう.
1.dwrをインポートする.jar
2.servlet構成
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
3.Javaバックグラウンドクラスを新規作成
public class TestClass
{
int i = 0;
public String testMethod1(String name)
{
return "Hello," + name;
}
public void send(final String msg)
{
Browser.withCurrentPage(new Runnable() {
public void run()
{
ScriptSessions.addFunctionCall("receive", msg);
}
});
}
}
4.dwr.の作成xmlプロファイル
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
"http://getahead.org/dwr/dwr30.dtd">
<dwr>
<allow>
<create creator="new" javascript="testClass"
scope="application">
<param name="class" value="dwr.TestClass" />
<include method="testMethod1" />
<include method="send" />
</create>
</allow>
</dwr>
5.前段コードの作成
<script src='dwr/interface/testClass.js'></script>
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
<body onload=dwr.engine.setActiveReverseAjax(true);>
<input type="text" id='shuo' />
<input type="button" value='send' id="btn" />
<div id="kkk2"></div>
<script type="text/javascript">
document.getElementById('btn').onclick = function(){
var msg = document.getElementById('shuo').value;
testClass.send(msg);
document.getElementById('shuo').value='';
}
function receive(msg){
var d = document.createElement('div');
d.innerHTML = msg;
document.getElementById('kkk2').appendChild(d);
}
</script>
</body>
今から複数のブラウザを開いてテストしましょう!!!