java - Set header web socket? -
i want pass blob data java server using web socket. java server is:
providersocket = new serversocket(2007, 10); system.out.println("waiting connection"); connection = providersocket.accept(); system.out.println("connection received " + connection.getinetaddress().gethostname()); out = new objectoutputstream(connection.getoutputstream()); out.flush(); in = new objectinputstream(connection.getinputstream()); sendmessage("connection successful");
and javascript client is:
var ws = new websocket("ws://127.0.0.1:2007"); ws.binarytype = "blob"; ws.onopen = function () { console.log("openened connection websocket"); }; ws.onmessage = function(e) { console.log(e.data); }; function doneencoding( blob ) { // blob audio blob ws.send(blob); }
error is: in server
connection received 127.0.0.1 java.io.streamcorruptedexception: invalid stream header: 47455420 @ java.io.objectinputstream.readstreamheader(unknown source) @ java.io.objectinputstream.<init>(unknown source) @ server.provider.run(provider.java:21) @ server.provider.main(provider.java:67) exception in thread "main" java.lang.nullpointerexception @ server.provider.run(provider.java:43) @ server.provider.main(provider.java:67)
what wrong? me. thank you.
the docs objectinputstream say:
an objectinputstream deserializes primitive data , objects previously written using objectoutputstream...
a random blob trying send javascript program doesn't qualify "primitive data , objects written using objectoutputstream" so, whatever you're trying blob, it's not gonna work.
what want depends on going use blob for, may want read byte array or similar, in:
inputstream in = connection.getinputstream(); bytearrayoutputstream out = new bytearrayoutputstream(); byte[] buffer = new byte[1024]; int n; (n = in.read(buffer); 0 < n; n = in.read(buffer)) { out.write(buffer, 0, n); } out.flush(); byte[] blob = out.tobytearray();
Comments
Post a Comment