BiHttp、HTTPプロトコルに基づく双方向通信パケット
2796 ワード
場合によっては、複数のWEBアプリケーションサービスが通信を必要とし、socket方式で通信を行う場合、スレッド管理などのWebServiceコンテナの既存の機能を利用することはできません.SOAP方式で通信する場合、サーバー側がClient側のWebServiceにアクセスできるようにする必要があります.Clientがイントラネットにある場合、これは面倒になります.
BiHttpはこの問題を解決するために書かれた通信パケットであり,HTTP pull技術に基づいて実現される.サーバ側は任意のJava WebService、Client側はWebService、JAVAアプリケーションであってもよい.
BiHttp(Beta)が実現しました
1)クライアントがサーバ側に同期要求/非同期要求を送信する
2)サーバ側からクライアントへの同期要求/非同期要求の送信
3)マルチクライアントサポート(異なるクライアントID設定)
4)クライアントのオフライン検出
5)クライアントのオフライン再接続
Server側のWeb.XMLの構成
Server側の主要コード:
Client側の主なコード:
BiHttpはこの問題を解決するために書かれた通信パケットであり,HTTP pull技術に基づいて実現される.サーバ側は任意のJava WebService、Client側はWebService、JAVAアプリケーションであってもよい.
BiHttp(Beta)が実現しました
1)クライアントがサーバ側に同期要求/非同期要求を送信する
2)サーバ側からクライアントへの同期要求/非同期要求の送信
3)マルチクライアントサポート(異なるクライアントID設定)
4)クライアントのオフライン検出
5)クライアントのオフライン再接続
Server側のWeb.XMLの構成
<servlet>
<servlet-name>BiHttpServlet</servlet-name>
<servlet-class>com.msbai.net.http.BiHttp.server.BiHttpServlet</servlet-class>
<init-param>
<param-name>listener</param-name>
<param-value>com.msbai.net.http.BiHttp.listener.BaseServerListener</param-value>
<!-- , BaseServerListener -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>BiHttpServlet</servlet-name>
<url-pattern>/BiHttpServlet</url-pattern>
</servlet-mapping>
Server側の主要コード:
BiHttpServer server = BiHttpServer.getInstance();
try {
int packetId = server.SendMsgReqAsync(regId, msg);//
String response = server.SendMsgReqSync(regId, msg);//
server.SendMsgResAsync(regId, msg, msgId);//
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ;
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Client側の主なコード:
BiHttpClient client = new BiHttpClient(
serverurl,new BaseClientListener() ,"id","validateMsg");
try {
client.connect();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ServerException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
System.out.println(client.SendMsgReqAsync("MsgReqAsync"));//
System.out.println(client.SendMsgReqSync("MsgReqSync"));//
client.SendMsgResAsync("MsgResAsync", "1");//
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ServerException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}