小编Pat*_*k Z的帖子

golang websocket如何在浏览器意外关闭时收到通知

我正在用 golang 编写一个 websocket 服务。该程序使用gollira websocket接受ws请求,并在每个请求处理程序中监听rabbitmq队列的消息。

问题是,当我关闭浏览器窗口时,处理程序线程仍在运行,我猜想有一种机制可以在连接断开时收到通知。

当我不工作时,我尝试收听频道 request.Context().Done() 。

package main

import (
    "fmt"
    "log"
    "net/http"

    "github.com/gorilla/websocket"
    "github.com/streadway/amqp"
)

var (
    addr     = "localhost:9999"
    upgrader = websocket.Upgrader{
        CheckOrigin: func(r *http.Request) bool { return true },
    }
)

var conn *amqp.Connection

func watch(w http.ResponseWriter, r *http.Request) {
    ns := r.URL.Query().Get("ns")
    if ns == "" {
        return
    }
    c, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Print("upgrade:", err)
        return
    }
    defer c.Close()

    ch, err := conn.Channel()
    failOnError(err, "Failed …
Run Code Online (Sandbox Code Playgroud)

go websocket gorilla

5
推荐指数
1
解决办法
1万
查看次数

在烧瓶中,我应该手动捕获视图中的所有可能错误吗?

我是Flask的新手,在编写视图时,如果应该捕获所有错误,我会徘徊.如果我这样做,大多数视图代码应该包含try ... except.我认为这不是优雅的.

例如.

@app.route('/')
def index():
    try:
        API.do()
    except:
        abort(503)
Run Code Online (Sandbox Code Playgroud)

我应该像这样编码吗?如果没有,服务会崩溃(uwsgi + lnmp)吗?

python flask

4
推荐指数
1
解决办法
3133
查看次数

无需互联网连接即可自行安装 RVM

我正在从 DJANGO 切换到 Rails,但我不知道如何在 PROD 环境中安装 RVM。

我的 PROD 服务器没有互联网连接,即使有一段时间也无法连接。而且我找不到 RVM 的独立安装包。

有没有离线RVM安装的解决方案?

顺便说一句,可以在没有互联网的情况下安装 rails 吗?

ruby ruby-on-rails rvm

3
推荐指数
1
解决办法
2527
查看次数

标签 统计

flask ×1

go ×1

gorilla ×1

python ×1

ruby ×1

ruby-on-rails ×1

rvm ×1

websocket ×1