SSE与angularJS和java一起使用freamwork
我是SSE的新手,所以我决定建立一个与SSE合作的网站。我在客户端angularJS中使用,并使用restAngular发出服务器请求。我的服务器端是用java编写的。我已经构建了POST、GET、DELETE请求,现在我想添加SSE。我有一个从服务器获取的对象数组。当我将对象添加到服务器时,它应该进行POST调用并在客户端更新数组,因此我决定为其创建SSE,每当此POST请求工作时,它都会工作 如何添加SSE 我为restAngular函数构建了服务:SSE与angularJS和java一起使用freamwork,java,angularjs,playframework-2.0,restangular,server-sent-events,Java,Angularjs,Playframework 2.0,Restangular,Server Sent Events,我是SSE的新手,所以我决定建立一个与SSE合作的网站。我在客户端angularJS中使用,并使用restAngular发出服务器请求。我的服务器端是用java编写的。我已经构建了POST、GET、DELETE请求,现在我想添加SSE。我有一个从服务器获取的对象数组。当我将对象添加到服务器时,它应该进行POST调用并在客户端更新数组,因此我决定为其创建SSE,每当此POST请求工作时,它都会工作 如何添加SSE 我为restAngular函数构建了服务: app.factory('restAng
app.factory('restAngularService', function($filter, Restangular, $q) {
var api = Restangular.all('api');
var getCards = api.one('get');
var deferred = $q.defer();
return {
getCards: function() {
var Cards = [];
if (getCards.get()) {
getCards.getList().then(function(b) {
Cards = b.plain();
deferred.resolve(Cards);
});
} else {
deferred.resolve([{}]);
}
return deferred.promise;
},
delCard : function(id){
var delCard = api.one('delete',id);
delCard.remove();
},
addCard : function(card){
var addCard = api.one('post');
addCard.post("card",card);
},
updateCard : function(card){
var addCard = api.one('update');
addCard.post("card",card);
},
updateStatusCard : function(id){
var incStatus = api.one('incStatus',id);
incStatus.put("card");
},
updateViewCard : function(id){
var incStatus = api.one('incView',id);
incStatus.put("card");
}
}
});
这是一个连接控制器和重语言服务的服务:
app.factory('ServiceArray',function($filter,restAngularService){
var Cards = restAngularService.getCards();
return{
getCards: function() {
return Cards;
},
addCard: function(card){
restAngularService.addCard(card);
//Cards.push(card);
return Cards;
},
getCard: function(monitorName){
return $filter('filter')(Cards, { monitorName: monitorName})[0];
},
updateViewCard: function(card){
restAngularService.updateViewCard(card.id);
return Cards;
},
updateStatusCard: function(card){
if(card.status < 3){
restAngularService.updateStatusCard(card.id);
/*if(($filter('filter')(Cards, { monitorName: monitorName})[0]).status < 3) {
($filter('filter')(Cards, {monitorName: monitorName})[0]).status++;
}*/
}
return Cards;
},
delCard: function(id){
restAngularService.delCard(id);
//Cards.splice(index, 1);
return Cards;
},
upadteCard: function(card){
var uCard = {id:card.id,monitorName:card.monitorName,monitorType:card.monitorType,monitorLevel:card.monitorLevel,monitorProdact:card.monitorProdact,monitorSystem:card.monitorSystem,monitorExplain:card.monitorExplain}
restAngularService.updateCard(uCard);
/*($filter('filter')(Cards, {id: card.id})[0]).monitorName = card.monitorName;
($filter('filter')(Cards, {id: card.id})[0]).monitorType = card.monitorType;
($filter('filter')(Cards, {id: card.id})[0]).monitorLevel = card.monitorLevel;
($filter('filter')(Cards, {id: card.id})[0]).monitorProdact = card.monitorProdact;
($filter('filter')(Cards, {id: card.id})[0]).monitorSystem = card.monitorSystem;
($filter('filter')(Cards, {id: card.id})[0]).monitorExplain = card.monitorExplain;*/
return Cards;
}
}
这是服务器端的一部分:
public static void addMonitorCard(String id,String dateHeader,String img,String monitorName,String monitorLevel,String monitorProdact,String monitorSystem,String monitorExplain,String monitorType,String classText,String classBtn,String text,int status,int views){
cards.add(new monitorCard(id,dateHeader,img,monitorName,monitorLevel,monitorProdact,monitorSystem,monitorExplain,monitorType,classText,classBtn,text,status,views));
}
public static Result addCard(){
JsonNode requestBody = request().body().asJson();
String id = requestBody.get("id").asText();
String dateHeader = requestBody.get("dateHeader").asText();
String img = requestBody.get("img").asText();
String monitorName = requestBody.get("monitorName").asText();
String monitorLevel = requestBody.get("monitorLevel").asText();
String monitorProdact = requestBody.get("monitorProdact").asText();
String monitorSystem = requestBody.get("monitorSystem").asText();
String monitorExplain = requestBody.get("monitorExplain").asText();
String monitorType = requestBody.get("monitorType").asText();
String classText = requestBody.get("classText").asText();
String classBtn = requestBody.get("classBtn").asText();
String text = requestBody.get("text").asText();
int status = requestBody.get("status").asInt();
int views = requestBody.get("views").asInt();
addMonitorCard(id,dateHeader,img,monitorName,monitorLevel,monitorProdact,monitorSystem,monitorExplain,monitorType,classText,classBtn,text,status,views);
SSE.sendSSEMassge();
return ok("added");
}
public static Result getCards()
{
return ok(Json.toJson(cards));
}
SSE是由客户端浏览器保持打开状态的开放HTTP连接。因此,为了正确地实现它,您需要创建一个解决方案,其中一个事件可以立即发送到多个终端客户端 这种架构模式称为发布/订阅或发布/订阅代码>是,它需要遵循该模式 当我以前实现SSE时,我已经将Redis用于发布/订阅部分 我写了一篇分为两部分的博客文章,介绍了如何使用Node实现SSE,希望这能让您走上正确的道路
我希望这有帮助 SSE是一个开放的HTTP连接,由客户端浏览器保持打开状态。因此,为了正确地实现它,您需要创建一个解决方案,其中一个事件可以立即发送到多个终端客户端 这种架构模式称为发布/订阅或发布/订阅代码>是,它需要遵循该模式 当我以前实现SSE时,我已经将Redis用于发布/订阅部分 我写了一篇分为两部分的博客文章,介绍了如何使用Node实现SSE,希望这能让您走上正确的道路
我希望这有帮助 什么不起作用?你是在问该怎么做,还是该怎么解决你的问题?我是在问该怎么做。我最后一个人做了……什么不管用?你是在问该怎么做,还是该怎么解决你的问题?我是在问该怎么做最后我自己做了。。。。
public static void addMonitorCard(String id,String dateHeader,String img,String monitorName,String monitorLevel,String monitorProdact,String monitorSystem,String monitorExplain,String monitorType,String classText,String classBtn,String text,int status,int views){
cards.add(new monitorCard(id,dateHeader,img,monitorName,monitorLevel,monitorProdact,monitorSystem,monitorExplain,monitorType,classText,classBtn,text,status,views));
}
public static Result addCard(){
JsonNode requestBody = request().body().asJson();
String id = requestBody.get("id").asText();
String dateHeader = requestBody.get("dateHeader").asText();
String img = requestBody.get("img").asText();
String monitorName = requestBody.get("monitorName").asText();
String monitorLevel = requestBody.get("monitorLevel").asText();
String monitorProdact = requestBody.get("monitorProdact").asText();
String monitorSystem = requestBody.get("monitorSystem").asText();
String monitorExplain = requestBody.get("monitorExplain").asText();
String monitorType = requestBody.get("monitorType").asText();
String classText = requestBody.get("classText").asText();
String classBtn = requestBody.get("classBtn").asText();
String text = requestBody.get("text").asText();
int status = requestBody.get("status").asInt();
int views = requestBody.get("views").asInt();
addMonitorCard(id,dateHeader,img,monitorName,monitorLevel,monitorProdact,monitorSystem,monitorExplain,monitorType,classText,classBtn,text,status,views);
SSE.sendSSEMassge();
return ok("added");
}
public static Result getCards()
{
return ok(Json.toJson(cards));
}