【发布时间】:2013-12-29 11:21:57
【问题描述】:
我们想要制作一个聊天应用程序,用户可以在其中输入一些文本,然后其他用户会看到。 Ext.Ajax.request 是被调用的函数,用于通过 Ajax 向服务器发送数据。
这是 Sencha Architect 3 中的代码:
var panel = button.up();
var input = panel.getComponent("inputField");
console.debug("Message: " + input.getValue());
Ext.Ajax.request({
url: '/Chat/chatMain/send',
params: {
message: input.getValue()
},
success: function(response){
console.log("Message successfully send.");
},
failure: function(response){
console.log("ERROR!");
console.log('server-side failure with status code ' + response.status);
}
});
Grails 中的聊天控制器:
class ChatMainController {
def send(){
//code for sending data back to client
//params.message contains message from browser it should be broadcast
//with server-side events
//event('sms', data) // will trigger registered browsers on 'sms' topic
}
}
以下示例将接收服务器发送事件,这些事件将从 grails 应用程序发送:
var source = new EventSource('/Chat/chatMain/receive');
source.addEventListener('sms', showSms, false);
source.onmessage = function (event) {
// a message without a type was fired
showSms(event);
};
function showSms(e){
console.log(e.data);
}
我们发现 grails 插件氛围和事件推送,但示例仅显示 websockets 而不是服务器端事件。我们不知道如何使用事件推送插件从 grails 服务器广播文本。有人可以帮忙吗?
【问题讨论】:
-
这是一个example的事件推送插件。它可能会有所帮助。
-
关于 Grails 邮件列表的讨论很长。也许那里的信息可以提供帮助:grails.1312388.n4.nabble.com/Server-Push-HowTo-td4641344.html
标签: javascript ajax grails extjs sencha-architect