是否有任何方法可以像处理jQuery中附加到XHR延迟对象的done方法处理程序一样处理websocket onmess
Is there any way to handle websocket onmessage handler just like done method handlers attached to XHR deferred objects in jQuery
我目前正在进行此破解,以处理websocket的onmessage。
$scope.wsCon.onMessage = function(result) {
$scope.wsCon.trigger(result.handler, result.data);
};
这里的问题是,onmessage通过websocket处理所有传入的请求。
但我需要这样的东西:
$scope.wsCon.
.send(data)
.done(data, function (result) {
// Deal with the result here
})
.fail(data, function() {
// Show the error message
})
.complete(data, function() {
// Do this always
});
我知道这在单连接的websocket中是无法实现的。但是,还有什么方法可以像jQuery那样产生效果吗?
WebSockets不是基于请求/响应的,因此,由于发送消息时不需要响应,您希望如何完成该承诺?插座正在冲洗缓冲区?:)如果浏览器因为套接字失效而无法发送消息,则会收到一条"oneror"消息。
如果您需要确认消息,或者等待响应,您需要自己实现它。
请看一下这个答案:AngularJS和WebSockets之外关于这个基于WebSocket的AngularJS应用程序中声明的$connection服务
基本上,这是一个关于在AngularJS中创建WebSocket服务的示例,该服务可用于请求/响应和发布/订阅。
基本上你可以监听信息:
$connection.listen(function (msg) { return msg.type == "CreatedTerminalEvent"; },
function (msg) {
addTerminal(msg);
$scope.$$phase || $scope.$apply();
});
听一次(非常适合请求/响应):
$connection.listenOnce(function (data) {
return data.correlationId && data.correlationId == crrId;
}).then(function (data) {
$rootScope.addAlert({ msg: "Console " + data.terminalType + " created", type: "success" });
});
并发送消息:
$connection.send({
type: "TerminalInputRequest",
input: cmd,
terminalId: $scope.terminalId,
correlationId: $connection.nextCorrelationId()
});
相关文章:
- 处理浮点错误的最佳方法是什么
- call()和apply()实际上是用来欺骗方法处理类似数组的对象的
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 异步处理所有事件处理程序的方法
- 使用javascript处理XMLHttpRequest的正确方法
- 为什么 .on() 方法不执行第一个处理程序
- 停止内部事件处理程序冒泡的其他方法,jQuery
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么
- Meteor方法-处理消息时出现内部异常
- 使用异步模块的Express + Mongoose请求处理程序的更简洁的方法
- 文件未到达处理程序的方法
- 处理复杂类型时的声明方法
- 处理此命名空间 JavaScript 结构的最佳方法是什么?
- 在 Web 应用中处理事件跟踪的最佳(高性能)方法
- 最好的处理方法是什么:在 JavaScript 中,对于大小为零的图像,不会触发加载
- knockoutjs-custum绑定预处理方法&addBindingCallback
- 对于不受信任的javascript代码,web worker是一种安全的沙箱处理方法吗?
- 使用不同数据结构的ajax错误处理方法
- 如何在加载页面的同时等待长时间的处理方法完成
- Javascript中最简单的子字符串处理方法