compatible with 1.0.3
This commit is contained in:
1
pom.xml
1
pom.xml
@@ -100,6 +100,7 @@
|
|||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
<version>2.14.1</version>
|
<version>2.14.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
|
<argLine>-Dfile.encoding=UTF-8</argLine>
|
||||||
<systemProperties>
|
<systemProperties>
|
||||||
<property>
|
<property>
|
||||||
<name>java.util.logging.config.file</name>
|
<name>java.util.logging.config.file</name>
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ public class Socket extends Emitter {
|
|||||||
List<Object> _args = new ArrayList<Object>(args.length + 1);
|
List<Object> _args = new ArrayList<Object>(args.length + 1);
|
||||||
_args.add(event);
|
_args.add(event);
|
||||||
_args.addAll(Arrays.asList(args));
|
_args.addAll(Arrays.asList(args));
|
||||||
|
|
||||||
JSONArray jsonArgs = new JSONArray();
|
JSONArray jsonArgs = new JSONArray();
|
||||||
for (Object arg : _args) {
|
for (Object arg : _args) {
|
||||||
jsonArgs.put(arg);
|
jsonArgs.put(arg);
|
||||||
@@ -157,6 +158,7 @@ public class Socket extends Emitter {
|
|||||||
if (_args.get(_args.size() - 1) instanceof Ack) {
|
if (_args.get(_args.size() - 1) instanceof Ack) {
|
||||||
logger.fine(String.format("emitting packet with ack id %d", Socket.this.ids));
|
logger.fine(String.format("emitting packet with ack id %d", Socket.this.ids));
|
||||||
Socket.this.acks.put(Socket.this.ids, (Ack)_args.remove(_args.size() - 1));
|
Socket.this.acks.put(Socket.this.ids, (Ack)_args.remove(_args.size() - 1));
|
||||||
|
jsonArgs.remove(jsonArgs.length() - 1);
|
||||||
packet.id = Socket.this.ids++;
|
packet.id = Socket.this.ids++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,6 +242,10 @@ public class Socket extends Emitter {
|
|||||||
this.onack(packet);
|
this.onack(packet);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Parser.BINARY_ACK:
|
||||||
|
this.onack(packet);
|
||||||
|
break;
|
||||||
|
|
||||||
case Parser.DISCONNECT:
|
case Parser.DISCONNECT:
|
||||||
this.ondisconnect();
|
this.ondisconnect();
|
||||||
break;
|
break;
|
||||||
@@ -276,7 +282,9 @@ public class Socket extends Emitter {
|
|||||||
if (sent[0]) return;
|
if (sent[0]) return;
|
||||||
sent[0] = true;
|
sent[0] = true;
|
||||||
logger.fine(String.format("sending ack %s", args));
|
logger.fine(String.format("sending ack %s", args));
|
||||||
Packet<JSONArray> packet = new Packet<JSONArray>(Parser.ACK, new JSONArray(args));
|
|
||||||
|
int type = HasBinaryData.hasBinary(args) ? Parser.BINARY_ACK : Parser.ACK;
|
||||||
|
Packet<JSONArray> packet = new Packet<JSONArray>(type, new JSONArray(args));
|
||||||
packet.id = id;
|
packet.id = id;
|
||||||
self.packet(packet);
|
self.packet(packet);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.github.nkzawa.hasbinarydata;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.JUnit4;
|
||||||
|
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
@RunWith(JUnit4.class)
|
||||||
|
public class HasBinaryDataTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void arrayContainsByteArray() {
|
||||||
|
JSONArray arr = new JSONArray("[1, null, 2]");
|
||||||
|
arr.put(1, "asdfasdf".getBytes(Charset.forName("UTF-8")));
|
||||||
|
assertTrue(HasBinaryData.hasBinary(arr));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void byteArray() {
|
||||||
|
assertTrue(HasBinaryData.hasBinary(new byte[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import org.junit.runners.JUnit4;
|
|||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
@@ -76,6 +77,27 @@ public class ConnectionTest extends Connection {
|
|||||||
latch.await();
|
latch.await();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(timeout = TIMEOUT)
|
||||||
|
public void receiveDateWithAck() throws URISyntaxException, InterruptedException {
|
||||||
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
|
socket = client();
|
||||||
|
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... objects) {
|
||||||
|
socket.emit("getAckDate", new JSONObject("{test: true}"), new Ack() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
assertThat(args[0], instanceOf(String.class));
|
||||||
|
socket.close();
|
||||||
|
latch.countDown();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.connect();
|
||||||
|
latch.await();
|
||||||
|
}
|
||||||
|
|
||||||
@Test(timeout = TIMEOUT)
|
@Test(timeout = TIMEOUT)
|
||||||
public void workWithFalse() throws URISyntaxException, InterruptedException {
|
public void workWithFalse() throws URISyntaxException, InterruptedException {
|
||||||
final CountDownLatch latch = new CountDownLatch(1);
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
@@ -98,6 +120,42 @@ public class ConnectionTest extends Connection {
|
|||||||
latch.await();
|
latch.await();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(timeout = TIMEOUT)
|
||||||
|
public void receiveUTF8MultibyteCharacters() throws URISyntaxException, InterruptedException {
|
||||||
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
|
final String[] correct = new String[] {
|
||||||
|
"てすと",
|
||||||
|
"Я Б Г Д Ж Й",
|
||||||
|
"Ä ä Ü ü ß",
|
||||||
|
"utf8 — string",
|
||||||
|
"utf8 — string"
|
||||||
|
};
|
||||||
|
|
||||||
|
socket = client();
|
||||||
|
final int[] i = new int[] {0};
|
||||||
|
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... objects) {
|
||||||
|
socket.on("echoBack", new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
assertThat((String)args[0], is(correct[i[0]]));
|
||||||
|
i[0]++;
|
||||||
|
if (i[0] == correct.length) {
|
||||||
|
socket.close();
|
||||||
|
latch.countDown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for (String data : correct) {
|
||||||
|
socket.emit("echo", data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.connect();
|
||||||
|
latch.await();
|
||||||
|
}
|
||||||
|
|
||||||
@Test(timeout = TIMEOUT)
|
@Test(timeout = TIMEOUT)
|
||||||
public void connectToNamespaceAfterConnectionEstablished() throws URISyntaxException, InterruptedException {
|
public void connectToNamespaceAfterConnectionEstablished() throws URISyntaxException, InterruptedException {
|
||||||
final CountDownLatch latch = new CountDownLatch(1);
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
@@ -209,7 +267,7 @@ public class ConnectionTest extends Connection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test(timeout = TIMEOUT)
|
@Test(timeout = TIMEOUT)
|
||||||
public void notTryToReconnectWithIncorrectPort() throws URISyntaxException, InterruptedException {
|
public void notTryToReconnectWithIncorrectPortWhenReconnectionDisabled() throws URISyntaxException, InterruptedException {
|
||||||
final CountDownLatch latch = new CountDownLatch(1);
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
IO.Options opts = new IO.Options();
|
IO.Options opts = new IO.Options();
|
||||||
opts.reconnection = false;
|
opts.reconnection = false;
|
||||||
@@ -241,6 +299,53 @@ public class ConnectionTest extends Connection {
|
|||||||
latch.await();
|
latch.await();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(timeout = TIMEOUT)
|
||||||
|
public void emitDateAsString() throws URISyntaxException, InterruptedException {
|
||||||
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
|
socket = client();
|
||||||
|
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... objects) {
|
||||||
|
socket.emit("echo", new Date());
|
||||||
|
socket.on("echoBack", new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
assertThat(args[0], instanceOf(String.class));
|
||||||
|
socket.close();
|
||||||
|
latch.countDown();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.connect();
|
||||||
|
latch.await();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(timeout = TIMEOUT)
|
||||||
|
public void emitDateInObject() throws URISyntaxException, InterruptedException {
|
||||||
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
|
socket = client();
|
||||||
|
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... objects) {
|
||||||
|
JSONObject data = new JSONObject();
|
||||||
|
data.put("date", new Date());
|
||||||
|
socket.emit("echo", data);
|
||||||
|
socket.on("echoBack", new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
assertThat(args[0], instanceOf(JSONObject.class));
|
||||||
|
assertThat(((JSONObject)args[0]).get("date"), instanceOf(String.class));
|
||||||
|
socket.close();
|
||||||
|
latch.countDown();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.connect();
|
||||||
|
latch.await();
|
||||||
|
}
|
||||||
|
|
||||||
@Test(timeout = TIMEOUT)
|
@Test(timeout = TIMEOUT)
|
||||||
public void sendAndGetBinaryData() throws URISyntaxException, InterruptedException {
|
public void sendAndGetBinaryData() throws URISyntaxException, InterruptedException {
|
||||||
final CountDownLatch latch = new CountDownLatch(1);
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
|
|||||||
@@ -29,6 +29,10 @@ io.of(nsp).on('connection', function(socket) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
socket.on('getAckDate', function(data, callback) {
|
||||||
|
callback(new Date());
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('disconnect', function() {
|
socket.on('disconnect', function() {
|
||||||
console.log('disconnect');
|
console.log('disconnect');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user