【问题标题】:Set header web socket?设置标题网络套接字?
【发布时间】:2013-05-08 18:34:26
【问题描述】:

我想使用 web socket 将 blob 数据传递给 java 服务器。 我的 java 服务器是:

providerSocket = new ServerSocket(2007, 10);
System.out.println("Waiting for connection");
connection = providerSocket.accept();
System.out.println("Connection received from " + connection.getInetAddress().getHostName());
out = new ObjectOutputStream(connection.getOutputStream());
out.flush();
in = new ObjectInputStream(connection.getInputStream());
sendMessage("Connection successful");

我的 javascript 客户端是:

var ws = new WebSocket("ws://127.0.0.1:2007");
ws.binaryType = "blob";
ws.onopen = function () { console.log("Openened connection to websocket"); };

ws.onmessage = function(e) {
    console.log(e.data);
};

function doneEncoding( blob ) { // blob is audio blob
    ws.send(blob);
}

错误是:在服务器中

Connection received from 127.0.0.1
java.io.StreamCorruptedException: invalid stream header: 47455420
    at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
    at java.io.ObjectInputStream.<init>(Unknown Source)
    at server.Provider.run(Provider.java:21)
    at server.Provider.main(Provider.java:67)
Exception in thread "main" java.lang.NullPointerException
    at server.Provider.run(Provider.java:43)
    at server.Provider.main(Provider.java:67)

怎么了?帮我。谢谢。

【问题讨论】:

    标签: java javascript sockets websocket


    【解决方案1】:

    ObjectInputStream 的文档说:

    ObjectInputStream 反序列化原始数据和之前使用 ObjectOutputStream 编写的对象...

    您尝试从 JavaScript 程序发送的随机 BLOB 不符合“以前使用 ObjectOutputStream 编写的原始数据和对象”的条件,因此,无论您尝试使用 BLOB 做什么,它都不会起作用。

    您想要做什么最终取决于您要使用 BLOB 的目的,但您可能想要read it into a byte array 或类似的东西,例如:

    InputStream in = connection.getInputStream();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int n;
    for (n = in.read(buffer); 0 < n; n = in.read(buffer))
    {
        out.write(buffer, 0, n);
    }
    out.flush();
    byte[] blob = out.toByteArray();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2013-03-18
      • 2016-03-30
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多