【问题标题】:Can't connect Starscream WebSocket to Java ServerSocket无法将 Starscream WebSocket 连接到 Java ServerSocket
【发布时间】:2018-03-22 09:13:18
【问题描述】:

我为我正在制作的应用程序设置了 Java 服务器。 Java 服务器在尝试连接时接受新客户端:

//Continuously accept new user clients
    try(ServerSocket serverSocket = new ServerSocket(portNumber)){ 

        while(!Thread.currentThread().isInterrupted()){

            //I do some stuff here
            ...
            //Then accept the socket
            Socket s = serverSocket.accept();

            //Then I do stuff with s; the user is connected
            ...

        }

    } catch (IOException e) {
        System.err.println("Could not listen on port "+portNumber);
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }

在 Android 上,我只使用 Socket 类,没有任何问题。它连接到我在 AWS 上的 EC2 上运行的 Java 服务器的端点,我没有任何问题。但是,对于 iOS,根据我的发现,非常推荐使用第 3 方库,我已决定使用 Starscream(目前)。

我无法使用简单的连接示例(Starscream github 页面上的那个)。有诸如 this 之类的教程可以使用 Node.js 设置本地服务器,但我不想深入讨论,因为我已经有一个相当简单的服务器。

这是我的快速代码:

class ViewVontroller: UIViewController, WebSocketDelegate{
    var socket = WebSocket(url: URL(string: "ec2-12-345-678-910.compute-1.amazonaws.com/:4922/")!)

    override func viewDidLoad(){
        super.viewDidLoad()
        socket.delegate = self

        print("connecting")
        socket.connect()
        print("should've connected")
    }
    ... //The rest of the protocol is implemented below with simple print statements as the body

它输出:

connecting
should've connected
[timestamp/project name...] [] nw_connection_get_connected_socket_block_invoke 1 Connection has no connected handler
Websocket disconnected: The operation couldn't be completed. Operation timed out

从 Starscream WebSockets 连接到 Java ServerSocket 是否存在某种问题?我读过一些在其他情况下暗示此类问题的内容,但我对套接字的底层实现几乎一无所知。

【问题讨论】:

    标签: java swift sockets starscream


    【解决方案1】:

    您的服务器似乎没有实现the WebSockets protocol

    WebSocket 不是简单的 TCP 连接;它使用特定的基于 HTTP 的握手,并将帧添加到流中。 implement this yourself 是可能的,但如果可能的话,我建议您使用库来代替 - 有 a number of perfectly good implementations available

    【讨论】:

    • 我才刚刚开始浏览您的链接,但这是我正在寻找的路径。谢谢!
    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    相关资源
    最近更新 更多