【问题标题】:Crystal Lang Websocket serverCrystal Lang Websocket 服务器
【发布时间】:2019-03-01 03:02:33
【问题描述】:

我需要有关 Crystal Lang websockets 的帮助,我想知道如何升级我在 websocket 上的连接。我想做简单的 websocket 服务器

【问题讨论】:

    标签: websocket crystal-lang


    【解决方案1】:

    希望有帮助

    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

    【讨论】:

    • 非常感谢我遇到了错误,但我通过这个更改修复了它```socket.on_close do puts "Socket closed" SOCKETS.delete(socket) end ``` 只是问题是因为连接立即关闭
    【解决方案2】:

    如果您正在寻找准备使用的东西,那么您可以使用我创建的 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
    

    如何使用 javascript 连接到 web socket 端点

    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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      相关资源
      最近更新 更多