SSE第三方包使用

目录结构

主目录sseThirdParty

  1. —— main.go

代码示例

main.go

  1. package main
  2. import (
  3. "time"
  4. "github.com/kataras/iris"
  5. "github.com/r3labs/sse"
  6. )
  7. //首先安装sse第三方软件包(如果您不喜欢这种方法,可以使用其他软件包或继续使用sse示例)
  8. // $ go get -u github.com/r3labs/sse
  9. func main() {
  10. app := iris.New()
  11. s := sse.New()
  12. /*
  13. 这会在调度程序内部创建一个新流。
  14. 没有消费者,发布消息,这个频道什么都不做。
  15. 启动iris处理程序后,客户端可以连接到此流
  16. 通过将stream指定为url参数,如下所示:
  17. http://localhost:8080/events?stream=messages
  18. */
  19. s.CreateStream("messages")
  20. app.Any("/events", iris.FromStd(s.HTTPHandler))
  21. go func() {
  22. //您设计何时向客户端发送消息,
  23. //这里我们等待5秒钟发送第一条消息
  24. //为了给你时间打开一个浏览器窗口..
  25. time.Sleep(5 * time.Second)
  26. //将有效负载发布到流。
  27. s.Publish("messages", &sse.Event{
  28. Data: []byte("ping"),
  29. })
  30. time.Sleep(3 * time.Second)
  31. s.Publish("messages", &sse.Event{
  32. Data: []byte("second message"),
  33. })
  34. time.Sleep(2 * time.Second)
  35. s.Publish("messages", &sse.Event{
  36. Data: []byte("third message"),
  37. })
  38. }()
  39. app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
  40. }
  41. /*对于golang SSE客户端,您可以查看:https://github.com/r3labs/sse#example-client */