来自公共lisp的WebSocket

来自公共lisp的WebSocket,websocket,common-lisp,Websocket,Common Lisp,我希望我的web应用程序将实时更新通知推送到客户端。 我在ccl上使用公共lisp和hunchentoot。 我应该使用哪些库 我找到了CLW和hunchensockets 后者不建议用于生产用途。 我需要生产级代码 对于第一个,在github的clws,有一个例子。但是,如果不从客户机发送消息,只打开客户机的套接字连接,我就无法理解如何向客户机发送数据 似乎与经典的http风格没有太大区别,iff客户端请求然后服务器响应。我遗漏了什么?以下是查找示例代码的技巧: 当然,这些例子的质量各不相同

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

我找到了CLW和hunchensockets

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

对于第一个,在github的clws,有一个例子。但是,如果不从客户机发送消息,只打开客户机的套接字连接,我就无法理解如何向客户机发送数据


似乎与经典的http风格没有太大区别,iff客户端请求然后服务器响应。我遗漏了什么?

以下是查找示例代码的技巧:

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


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

以下是查找示例代码的技巧:

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

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

应该使用

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"))
然后,您可以通过类
echo资源的
clients
accessor来收集连接到此资源的客户端列表

(clients res1)
现在我在顶部提到的函数可以像这样从这个包中使用

(write-to-client-text (car (clients res1)) "new message to one")
(write-to-clients-text (clients res1) "<p id='mesagetoall'>new message to all</a>")
(写入客户端文本(car(客户端res1))“向一个发送新消息”)
(向客户端写入文本(客户端res1)“

向所有人发送新消息”)

应该使用

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"))
然后,您可以通过类
echo资源的
clients
accessor来收集连接到此资源的客户端列表

(clients res1)
现在我在顶部提到的函数可以像这样从这个包中使用

(write-to-client-text (car (clients res1)) "new message to one")
(write-to-clients-text (clients res1) "<p id='mesagetoall'>new message to all</a>")
(写入客户端文本(car(客户端res1))“向一个发送新消息”)
(向客户端写入文本(客户端res1)“

向所有人发送新消息”)


我已经查看了第一个示例中的示例。js部件不见了。我已经完成了。我的例子很有效。但这里的连接示例类似于正常的http iff请求-然后响应模式。我认为,在web套接字中,客户端可以从服务器向一次打开的套接字写入数据。我的意思是应该可以由服务器启动。例如,某个应用程序的某个用户通过http向服务器发送输入,服务器保存到db,并且服务器在打开后也会写入套接字,因此无需客户端的启动数据就会推送到该客户端。这可以通过WebSocket/clws实现吗?我已经看过了第一个例子。js部件不见了。我已经完成了。我的例子很有效。但这里的连接示例类似于正常的http iff请求-然后响应模式。我认为,在web套接字中,客户端可以从服务器向一次打开的套接字写入数据。我的意思是应该可以由服务器启动。例如,某个应用程序的某个用户通过http向服务器发送输入,服务器保存到db,并且服务器在打开后也会写入套接字,因此无需客户端的启动数据就会推送到该客户端。这可以通过web套接字/clws实现吗?谁推荐hunchensockets用于生产?谁推荐hunchensockets用于生产?