小编A-l*_*bby的帖子

清除 javascript 的 Websocket 上的缓冲区

我正在尝试编写 javacript 以使用 Websocket 接收 mjpeg。客户端可以选择要播放的视频文件。

服务器使用 json 将 mjpeg 作为图像一一发送,如下所示:{"image":"base64_image"}

当客户端尝试选择不同的视频时会出现问题。切换到新的视频文件需要 2 多分钟。(虽然服务器和客户端在不同的国家。)

我知道有延迟,但问题是

打开前一个视频文件的时间越长,下一个视频文件显示的速度就越慢。

我猜缓冲区中有数据排队。所以,我的问题是

如何清除javascript中的套接字缓冲区?

或者如果不是关于缓冲区,你知道问题是什么吗?

javascript sockets buffer websocket

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

在所有goroutines完成后,让golang关闭使用的频道

我正在尝试运行一些goroutines,它们会将结果发送到一个频道.在完成所有goroutine之后,我需要一个让通道关闭的好方法.

我的第一次尝试是在产生所有go例程后关闭它,但我认为在所有goroutine可以发送结果之前,某个频道已关闭.

for i:=0; i<=10;i++{
  go func(){
    result:=calculate()
    c<-result
  }()
}
close(c)
for result:= range c{
  all_result=append(all_result, result...)
}
Run Code Online (Sandbox Code Playgroud)

然后,我第二次尝试计算一个线程并在没有线程运行后关闭它.

for i:=0; i<=10;i++{
  go func(){
    atomic.AddUint64(&go_routine_count, 1)
    result:=calculate()
    c<-result
    atomic.AddUint64(&rt_count, ^uint64(0))
  }()
}
go func(){
  for{
    // some little time to let above goroutine count up go_routine_count before this goroutine can actually check go_routine_count==0
    time.Sleep(time.Millisecond)
    go_current_routine_count:=atomic.LoadUint64(&go_routine_count)
    if go_routine_count==0{
      close(c)
    }
  }
}()
for result:= range c{
  all_result=append(all_result, result...)
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我觉得可能有更正确或更有效的方式.此外,在某些情况下,如果后来的计数检查goroutine在循环中的goroutines之前运行,则此方法将不起作用.

有没有更好的办法?

go goroutine

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

Passport.js 是否支持“客户端凭证流程”?

我正在创建一个 node.js web 应用程序来使用“客户端凭据流”访问 GettyImages API

Passport.js 支持吗?如果是,我该如何实施?

oauth node.js oauth-2.0 passport.js clientcredential

2
推荐指数
1
解决办法
2636
查看次数

使用java replaceAll方法用一个正则表达式替换句子中的单词

我试图用字符串中的"is not"替换"is"但是有一个例外,它不应该替换驻留在其他单词中的"is".

"This is an ant" --> "This is not an ant" [CORRECT]
"This is an ant" --> "This not is not an ant" [INCORRECT]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所做的是

String result = str.replaceAll("([^a-zA-Z0-9])is([^a-zA-Z0-9])","$1is not$2");
result = result.replaceAll("^is([^a-zA-Z0-9])","is not$1");
result = result.replaceAll("([^a-zA-Z0-9])is$","$1is not");
result = result.replaceAll("^is$","is not");
Run Code Online (Sandbox Code Playgroud)

但我认为只有一个正则表达式是可能的,但我无法弄明白.可能吗?

java regex replace str-replace

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

为什么golang在我的for循环中没有正确迭代?

我很困惑为什么以下代码不打印出迭代值.

test:= []int{0,1,2,3,4}
for i,v := range test{
  go func(){
    fmt.Println(i,v)
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为它应该打印出来

0 0
1 1
2 2
3 3 
4 4
Run Code Online (Sandbox Code Playgroud)

但相反,它打印出来了

4 4
4 4
4 4
4 4
4 4
Run Code Online (Sandbox Code Playgroud)

go goroutine

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