普通lisp的websockets

时间:2014-05-25 13:09:51

标签: websocket common-lisp

我希望我的网络应用程序将实时更新通知推送到客户端。 我在ccl上使用常见的lisp和hunchentoot。 我应该使用哪些库?

我找到了clws和hunchensockets。

不建议将后者用于生产用途。 我需要生产级代码。

对于第一个,clws,在github上有一个例子。但我无法弄清楚如何在不从客户端发送消息的情况下向客户端发送数据,只需从客户端打开套接字连接即可。

似乎与经典的http样式没有太大区别,iff客户端请求服务器响应。我在那里错过了什么?

2 个答案:

答案 0 :(得分:4)

这是查找示例代码的技巧:

https://github.com/search?l=common-lisp&q=defsystem+clws&ref=searchresults&type=Code

当然,这些例子的质量各不相同。

类似的方法可能适用于其他更大的代码托管服务。

答案 1 :(得分:2)

应该使用

write-to-client-text

write-to-clients-text分别为一个客户端及其中的许多或全部客户端发送服务器启动的响应。

首先应该通过为这样的资源创建类来连接到示例中创建的资源的客户端列表。

(defclass echo-resource (ws-resource)
  ((clients :initform () :accessor clients)))

示例中未提及的是,一旦定义了此资源实例,以便以后使用它。

(setf res1 (make-instance 'echo-resource))

(register-global-resource "/echo"
                          res1
                          (origin-prefix "http://127.0.0.1" "http://localhost"))

然后您可以通过类clients的{​​{1}}访问者

收集此资源的已连接客户端列表
echo-resource

现在我在顶部提到的功能可以在这个包中使用

(clients res1)