我正在尝试编写 javacript 以使用 Websocket 接收 mjpeg。客户端可以选择要播放的视频文件。
服务器使用 json 将 mjpeg 作为图像一一发送,如下所示:{"image":"base64_image"}
当客户端尝试选择不同的视频时会出现问题。切换到新的视频文件需要 2 多分钟。(虽然服务器和客户端在不同的国家。)
我知道有延迟,但问题是
打开前一个视频文件的时间越长,下一个视频文件显示的速度就越慢。
我猜缓冲区中有数据排队。所以,我的问题是
如何清除javascript中的套接字缓冲区?
或者如果不是关于缓冲区,你知道问题是什么吗?
我正在尝试运行一些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之前运行,则此方法将不起作用.
有没有更好的办法?
我正在创建一个 node.js web 应用程序来使用“客户端凭据流”访问 GettyImages API
Passport.js 支持吗?如果是,我该如何实施?
我试图用字符串中的"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)
但我认为只有一个正则表达式是可能的,但我无法弄明白.可能吗?
我很困惑为什么以下代码不打印出迭代值.
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 ×2
goroutine ×2
buffer ×1
java ×1
javascript ×1
node.js ×1
oauth ×1
oauth-2.0 ×1
passport.js ×1
regex ×1
replace ×1
sockets ×1
str-replace ×1
websocket ×1