NoOps

Ops make no ops | Ops的目标是没有Ops,嗯!

web tail log with sinatra websocket

作者: |   1,299 浏览  | 

最近在做一个web tail日志的功能,使用了websocket和ruby tail功能。
先来看下ruby tail:

1. extend File类

2. mixin File类

3. 其中可以设置break_if_eof(到达文件末尾后抛出BreakException异常)或者return_if_eof(到达文件末尾后直接返回)属性

sinatra websocket可以参考https://github.com/simulacre/sinatra-websocket,有详细的例子,非常简单。
中间遇到了一个小问题,在sinatra中使用HTTP Basic Authentication认证,发现在firefox下没有任何问题;而使用chrome登陆成功后,tail log时返回401,无法使用websocket。
chrome在请求websocket时不会发送cookie信息,所以导致认证失败,返回401,解决方案如下:

在检查认证之前,先判断请求是否为websocket

发表评论