将 Kemal 会话与 websocket 结合使用
Using Kemal-sessions with websocket
Crystal 中 Kemal web 框架的 kemal-session 模块的文档提供了这个 example:
require "kemal"
require "kemal-session"
get "/set" do |env|
env.session.int("number", rand(100)) # set the value of "number"
"Random number set."
end
get "/get" do |env|
num = env.session.int("number") # get the value of "number"
env.session.int?("hello") # get value or nil, like []?
"Value of random number is #{num}."
end
Kemal.run
我在 Websocket 中使用 Kemal。我有一个类似于以下示例的代码。如果我没有 env
的访问权限,我该如何使用会话?
ws "/" do |socket|
# Send welcome message to the client
socket.send "Hello from Kemal!"
# Handle incoming message and echo back to the client
socket.on_message do |message|
socket.send "Echo back from server #{message}"
end
# Executes when the client is disconnected. You can do the cleaning up here.
socket.on_close do
puts "Closing socket"
end
end
Websocket 连接也产生上下文。您只需要从
这样的块访问它
ws "/" do |socket, env|
env.session.int?("hello")
end
Crystal 中 Kemal web 框架的 kemal-session 模块的文档提供了这个 example:
require "kemal"
require "kemal-session"
get "/set" do |env|
env.session.int("number", rand(100)) # set the value of "number"
"Random number set."
end
get "/get" do |env|
num = env.session.int("number") # get the value of "number"
env.session.int?("hello") # get value or nil, like []?
"Value of random number is #{num}."
end
Kemal.run
我在 Websocket 中使用 Kemal。我有一个类似于以下示例的代码。如果我没有 env
的访问权限,我该如何使用会话?
ws "/" do |socket|
# Send welcome message to the client
socket.send "Hello from Kemal!"
# Handle incoming message and echo back to the client
socket.on_message do |message|
socket.send "Echo back from server #{message}"
end
# Executes when the client is disconnected. You can do the cleaning up here.
socket.on_close do
puts "Closing socket"
end
end
Websocket 连接也产生上下文。您只需要从
这样的块访问它ws "/" do |socket, env|
env.session.int?("hello")
end