小编Cyc*_*nus的帖子

LuaLanes和LuaSockets

我正在研究一个小的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)

lua luasocket lua-lanes

6
推荐指数
2
解决办法
3200
查看次数

如何检测用户取消请求

我正在通过编写一个非常基本的 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)

proxy http node.js

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

Kivy VideoPlayer 全屏、循环和隐藏控件

我刚开始使用 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)

理想情况下,我会让它全屏运行并且能够禁用控件(因此用户可以使用键盘/触摸/计时器事件/等与事物进行交互),但我找不到有关如何禁用它们的任何文档。任何指针?

我已经设法让窗口本身全屏运行,但这不是一回事,我不这么认为。谢谢!

python kivy

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

标签 统计

http ×1

kivy ×1

lua ×1

lua-lanes ×1

luasocket ×1

node.js ×1

proxy ×1

python ×1