Lisp 有关sw http中APPLICATION-FINDER-FN的详细信息

Lisp 有关sw http中APPLICATION-FINDER-FN的详细信息,lisp,common-lisp,comet,Lisp,Common Lisp,Comet,我想用CommonLisp做一些同步的web编程,我正在收集选项。其中之一是“为AJAX/Comet定制的HTTP服务器”。文档似乎有点缺乏,因为我能找到的唯一一篇文章告诉你 子类服务器,并将APPLICATION-FINDER-FN插槽设置为回调 这将生成您的内容 似乎没有任何关于回调应该是什么样子的注释或示例(一些prodding告诉我,它应该期望一个服务器和一个连接作为参数,但没有关于它应该返回或执行什么操作的说明) 将其设置为类似于 (lambda (server conn) (decl

我想用CommonLisp做一些同步的web编程,我正在收集选项。其中之一是“为AJAX/Comet定制的HTTP服务器”。文档似乎有点缺乏,因为我能找到的唯一一篇文章告诉你

子类服务器,并将APPLICATION-FINDER-FN插槽设置为回调 这将生成您的内容

似乎没有任何关于回调应该是什么样子的注释或示例(一些prodding告诉我,它应该期望一个
服务器
和一个
连接
作为参数,但没有关于它应该返回或执行什么操作的说明)

将其设置为类似于

(lambda (server conn) (declare (ignore server conn)) "Hello world")
似乎什么都不做,所以我假设我要么需要在某个地方写入流,要么以不太明显的方式与
服务器
/
连接
交互


有什么提示吗?

处理程序接受一个
连接
,该连接有一个
响应
,其中有一些

假设您要将内容添加到
连接的
响应的
块中(即
八位字节)。幸运的是,已经定义了一些帮助器方法来简化这一过程

您可以尝试以下方法(我无法编译SW-HTTP,因此无法):


祝你好运

处理程序接受一个
连接
,该连接有一个
响应
,该响应有一些

假设您要将内容添加到
连接的
响应的
块中(即
八位字节)。幸运的是,已经定义了一些帮助器方法来简化这一过程

您可以尝试以下方法(我无法编译SW-HTTP,因此无法):


祝你好运

显然,您必须写入
连接流
。但是看看
sw-http
代码,我不建议在生产中使用它,尽管它可能值得研究一种在它之上开发东西的方法……我相信Hunchentoot是当今酷孩子们使用的常见Lisp web服务器。另外,我想我同意@VsevolodDyomkin,这个图书馆还没有准备好迎接黄金时间。@Samuel-Aware,但是AFAIK。诚然,自那条评论以来,情况可能有所改变,但仍然如此。哦,当然,现在我想起来,这是有道理的。显然,你必须写入
连接流。但是看看
sw-http
代码,我不建议在生产中使用它,尽管它可能值得研究一种在它之上开发东西的方法……我相信Hunchentoot是当今酷孩子们使用的常见Lisp web服务器。另外,我想我同意@VsevolodDyomkin,这个图书馆还没有准备好迎接黄金时间。@Samuel-Aware,但是AFAIK。诚然,自那次评论以来,这可能已经改变了,但仍然如此。哦,当然,我现在想起来,这是有道理的。是从特定的包中
排队
,还是应该是
sw http
?@Inaimathi的一部分的一个概念函数,这可能是aromyxo的队列推送,而论点的顺序正好相反。抱歉。我暂时接受这个,但它还没有真正起作用(我明天会再玩一些,然后公布结果)。谢谢:)是来自特定软件包的
排队
,还是应该是
sw http
?@Inaimathi的一个概念函数,可能是aromyxo的队列推送,参数的顺序相反。抱歉。我暂时接受这个,但它还没有真正起作用(我明天会再玩一些,然后公布结果)。谢谢:)
(defun hello (server connection)
  (let*((response (cn-response connection))
        (chunks (rs-chunks response)))
    (queue-push chunks
                (mk-response-status-code 200)
    (queue-push chunks
                (mk-response-message-body "Hello cruel world"))))

(defclass my-server (server)
  ((application-finder-fn :initform #'hello)))