【发布时间】:2019-03-01 03:02:33
【问题描述】:
我需要有关 Crystal Lang websockets 的帮助,我想知道如何升级我在 websocket 上的连接。我想做简单的 websocket 服务器
【问题讨论】:
我需要有关 Crystal Lang websockets 的帮助,我想知道如何升级我在 websocket 上的连接。我想做简单的 websocket 服务器
【问题讨论】:
希望有帮助
require "http/server"
SOCKETS = [] of HTTP::WebSocket
ws_handler = HTTP::WebSocketHandler.new do |socket|
puts "Socket opened"
SOCKETS << socket
socket.on_message do |message|
SOCKETS.each { |socket| socket.send "Echo back from server: #{message}" }
end
socket.on_close do
puts "Socket closed"
end
end
server = HTTP::Server.new([ws_handler])
address = server.bind_tcp "0.0.0.0", 3000
puts "Listening on http://#{address}"
server.listen
https://medium.com/@muhammadtriwibowo/simple-websocket-using-crystal-13b6f67eba61
【讨论】:
如果您正在寻找准备使用的东西,那么您可以使用我创建的 Shivneri 框架 - 它提供了一个 javascript 库和基于 MVC 的方法来创建一个套接字服务器。
class ChatController < Shivneri::WebSocketController
@[On("message")]
def receive_message(data : String)
# send message to caller
clients.current.emit("message", "Received message is #{data}")
# send message to all clients
clients.emit("message", "Someone sent message #{data}")
end
end
Shivneri 框架提供了一个 JavaScript 库 shivneri-ws-client-javascript 来帮助你创建一个实时的 Web 应用程序
var socket = new shivneriWsClient.Instance();
socket.on("message", function(data){
console.log("data", data);
});
await socket.init(`<web-socket-url>`);
// emit event to server
socket.emit("message","Successfully connected")
它提供了许多功能,例如客户端分组、客户端连接和断开连接时的事件等。
有关更多信息,请查看 shivneri websocket 文档 - https://shivneriforcrystal.com/tutorial/websocket/
【讨论】: