测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布上次发布 | 2020年9月 |
由Patrick Kaeding、Alexis Georges、Arun Bhalla、Gavin Whelan、Joe Cieslik、Louis Chan、Matthew Keeler维护。
为iOS、watchOS、tvOS和Mac提供的服务器端发送事件
它创建了一个在您的Cocoa应用程序和web服务器之间的持久单向HTTP通道,以便您的应用程序可以接收来自服务器的事件。
通过下面的addEventListener:handler:
方法订阅一个命名事件,如下所示
NSURL *serverURL = [NSURL URLWithString:@"http://127.0.0.1:8000/"];
EventSource *source = [EventSource eventSourceWithURL:serverURL];
[source addEventListener:@"hello_event" handler:^(Event *e) {
NSLog(@"%@: %@", e.event, e.data);
}];
它非常简单,对于看过任何服务器端发送事件JavaScript代码的人来说都很熟悉。
有一个onMessage:
方法将接收来自服务器的所有消息事件。
NSURL *serverURL = [NSURL URLWithString:@"http://127.0.0.1:8000/"];
EventSource *source = [EventSource eventSourceWithURL:serverURL];
[source onMessage:^(Event *e) {
NSLog(@"%@: %@", e.event, e.data);
}];
此外,还有onOpen:
、onError:
和onReadyStateChanged:
方法来接收连接状态事件。
NSURL *serverURL = [NSURL URLWithString:@"http://127.0.0.1:8000/"];
EventSource *source = [EventSource eventSourceWithURL:serverURL];
[source onError:^(Event *e) {
NSLog(@"ERROR: %@", e.data);
}];
除了onError:
外,这些事件的事件和data
属性将是null
。请检查事件对象上的readyState
属性。
即使在服务器宕机的情况下,重连尝试也是自动且无缝的。重连尝试的频率由服务器通过在事件上设置retry
键来控制。
这是一个简单的Node.js应用程序,将生成服务器端发送事件。事件以每秒一个的速率创建。
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, { 'Transfer-Encoding': 'chunked', 'Content-Type': 'text/event-stream' });
setInterval(function() {
var now = new Date().getTime();
var payload = 'event: hello_event\ndata: {"message":"' + now + '"}\n\n';
res.write(payload);
}, 1000);
}).listen(8000);
上面的有效负载没有包括一个id
参数,但是如果您包括一个,它将在您的Cocoa代码中的Event
对象中可用。
EventSource支持多种方法在项目中安装库。
CocoaPods是一个Objective-C的依赖管理器,它自动并简化了在项目中使用第三方库(如EventSource)的过程。您可以使用下面的命令安装它:
$ gem install cocoapods
要使用CocoaPods将EventSource集成到Xcode项目中,请在您的Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target 'TargetName' do
pod 'DarklyEventSource'
end
然后,运行以下命令
$ pod install
Carthage是一个集中式依赖管理器,它会构建您的依赖并提供二进制框架。
您可以使用下面的命令使用Homebrew安装Carthage:
$ brew update
$ brew install carthage
要使用Carthage将EventSource集成到Xcode项目中,请在您的Cartfile
中指定它
github "launchdarkly/ios-eventsource"
运行 carthage
构建框架,并将构建的 EventSource.framework
拖入您的 Xcode 项目。
版权所有 (c) 2013 Neil Cowburn (http://github.com/neilco/)
特此授予任何人免费获取本软件及其相关文档文件(“软件”)副本的权限
在使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许将软件提供给他人用于此目的时,不得受以下条件的限制
不管是为了什么,包括但不限于对适销性、特定用途的适用性和非侵权的保证
在任何事件中,作者或版权持有者也不应对任何索赔、损害或其他责任负责,无论是基于合同、侵权或任何其他行为,无论是否因其软件或其使用而产生的,或与其相关
软件或在使用软件中的任何部分或全部。
以上版权声明和本许可声明应包含在软件的任何副本或实质性部分的软件中。
未经明示同意,不得将软件用于或通过软件进行任何非法、非授权的、损害或以其他方式有害的活动。
软件按原样提供,任何形式的保证、明示的或暗示的,包括但不限于对适销性和特定用途的适用性的保证,概不承担。
在任何情况下,作者和版权持有者均不对任何因使用或无法使用本软件而产生的直接、间接、巧合、特殊、惩戒性或后果性损害责任,无论基于合同、侵权或任何其他行为,概不负责。
即使在被告知可能发生此类损害的情况下。
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.
Including but not limited to the warranties of merchantability, fitness for particular purpose and non-infringement.
In no event shall the authors or copyright holders be liable for any claim, damages or other.
Liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other.
Deals in the software.