我正在研究一个小的Lua应用程序(在Lua for Windows下,如果这很重要),它使用套接字与外界进行通信.(LuaSocket)
而我正试图并行提出几个请求.所以我认为LuaLanes是要走的路.(当然,如果有更好的解决方案,我会接受替代方案,但我不愿意为此处理协程.)
像这样的东西:
server = assert (socket.bind ('*', 1234))
client = server : accept ()
-- set id to some unique value
allClients [id] = client
theLane = lanes.gen ("", laneTest) ( id )
print (theLane [1])
Run Code Online (Sandbox Code Playgroud)
当laneTest函数的定义如下:
function laneTest (id)
local client = allClients [id]
print ('peer: ', client:getpeername())
end
Run Code Online (Sandbox Code Playgroud)
我的问题是在laneTest函数内部,当作为一个通道运行时,我收到这个可爱的错误信息:
尝试索引本地"客户端"(userdata值)
(从线client:getpeername())
所以..我不确定这里发生了什么?车道与插座不兼容,还是我做错了什么?
我想这可能是因为车道附带的版本和Lua的Windows是古(luaforwindows),不与插座的工作,但最新的版本可能?(车道2.0.4对比最近的3.xx)
我真的不知道怎么去更新我所拥有的Lanes版本,否则我现在就试过了,所以.我很感激任何建议,如果那是我可以前进的地方,或者有更明显的事情,我做错了.
编辑:我继续通过luarocks安装车道,并使用安装为摇滚的车道3.1.6-1也有同样的问题.
编辑2:试过这个(但仍然失败):
require ('socket')
require ('lanes')
local allClients = {}
function …Run Code Online (Sandbox Code Playgroud) 我正在通过编写一个非常基本的 http/web 缓存代理来尝试 Node.js,并且遇到了一些我无法突破的问题。
假设我有一个非常基本的代理功能(侦听请求,将其传送到外部服务器,等待响应,将其传送回客户端),我如何检测客户端(Web 浏览器)何时取消请求?当用户在浏览器上单击“停止”/Esc 时,浏览器不会向我发送任何“请求”或信息,并且不会调用“响应”连接结束时的回调。
这就是我的意思:
http.createServer (clientRequest, clientResponse) {
var client = http.createClient (port, hostname);
var request = client.request (method, url, headers);
request.addListener ('response', function(response){
response.addListener ('data', function(chunk){
// forward data to clientResponse..
}
response.addListener ('end', function(){
// end clientResponse..
}
});
clientResponse.addListener('end', function(){
// this never gets called :(
// I want it to terminate the request/response created just above
}
}
Run Code Online (Sandbox Code Playgroud) 我刚开始使用 Kivy,所以如果我做错了什么,请指出......我正在尝试使用视频播放器。也就是说,我似乎无法让它识别任何“选项”,而且我真的很想要一种隐藏控件的方法(以防止用户停止/暂停/更改音量/交互等......而电影是跑步)。
这是我到目前为止所得到的:
import kivy
kivy.require('1.9.0')
from kivy.app import App
from kivy.uix.videoplayer import VideoPlayer
class MyApp(App):
def build(self):
self.player = VideoPlayer(fullscreen=True, allow_fullscreen=True, source='mymovie.mp4', state='play', options={'allow_stretch': True, 'eos': 'loop', 'fullscreen': True})
return(self.player)
if __name__ == '__main__':
MyApp().run()
Run Code Online (Sandbox Code Playgroud)
eos:上面的“循环”,似乎完全被忽略了。就像“全屏”一样。双击播放器不会使其全屏运行。
我正在 Windows 上进行测试(但希望移植到 android),并且在后台的“控制台”窗口中,我有 2 个应该对我有帮助的警告,但我想我不知道如何处理它:
[WARNING ] [VideoPlayer ] Cannot switch to fullscreen, window not found.
[WARNING ] [VideoPlayer ] Cannot switch to fullscreen, window not found.
Run Code Online (Sandbox Code Playgroud)
理想情况下,我会让它全屏运行并且能够禁用控件(因此用户可以使用键盘/触摸/计时器事件/等与事物进行交互),但我找不到有关如何禁用它们的任何文档。任何指针?
我已经设法让窗口本身全屏运行,但这不是一回事,我不这么认为。谢谢!