调整websocket,加线程处理数据,防止阻塞(可能?)
This commit is contained in:
parent
d2bcd5c64a
commit
516e030266
@ -9,7 +9,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|||||||
@SpringBootApplication()
|
@SpringBootApplication()
|
||||||
public class BilibiliApplication {
|
public class BilibiliApplication {
|
||||||
|
|
||||||
public static String version = "0.9";
|
public static String version = "0.10";
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Log.i("启动版本", version);
|
Log.i("启动版本", version);
|
||||||
|
@ -110,7 +110,7 @@ public class BiliLiveDatabase extends SQLiteManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSource(WSData bean) {
|
public synchronized void addSource(WSData bean) {
|
||||||
// Log.i("BiliLiveDatabase.addSource", config.getRoomId());
|
// Log.i("BiliLiveDatabase.addSource", config.getRoomId());
|
||||||
add(new LiveSourceDatabaseBean(bean));
|
add(new LiveSourceDatabaseBean(bean));
|
||||||
addData(bean);
|
addData(bean);
|
||||||
|
@ -224,10 +224,13 @@ public class WebSocketServer {
|
|||||||
* @param data 待压缩的数据
|
* @param data 待压缩的数据
|
||||||
*/
|
*/
|
||||||
public void decompress(byte[] data) {
|
public void decompress(byte[] data) {
|
||||||
|
// Log.i("数据大小:" + header.getDataSize() + " 协议:" + header.getAgree() + " 头部大小:" + header.getHeaderSize() + " 命令:" + header.getCmdData());
|
||||||
|
Thread.ofVirtual()
|
||||||
|
.name("TaskUnDanmu-" + Thread.currentThread().getName())
|
||||||
|
.start(() -> {
|
||||||
byte[] bytes = new byte[data.length - 16];
|
byte[] bytes = new byte[data.length - 16];
|
||||||
WebSocketHeader header = new WebSocketHeader(data);
|
WebSocketHeader header = new WebSocketHeader(data);
|
||||||
System.arraycopy(data, header.getHeaderSize(), bytes, 0, data.length - header.getHeaderSize());
|
System.arraycopy(data, header.getHeaderSize(), bytes, 0, data.length - header.getHeaderSize());
|
||||||
// Log.i("数据大小:" + header.getDataSize() + " 协议:" + header.getAgree() + " 头部大小:" + header.getHeaderSize() + " 命令:" + header.getCmdData());
|
|
||||||
switch (header.getAgree()) {
|
switch (header.getAgree()) {
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
@ -236,6 +239,8 @@ public class WebSocketServer {
|
|||||||
default:
|
default:
|
||||||
unzipDanmu(bytes, header.getAgree() == 3);
|
unzipDanmu(bytes, header.getAgree() == 3);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +254,7 @@ public class WebSocketServer {
|
|||||||
DirectDecompress directDecompress = Decoder.decompress(bytes);
|
DirectDecompress directDecompress = Decoder.decompress(bytes);
|
||||||
if (directDecompress.getResultStatus() == DecoderJNI.Status.DONE) {
|
if (directDecompress.getResultStatus() == DecoderJNI.Status.DONE) {
|
||||||
WebSocketBody body = new WebSocketBody(directDecompress.getDecompressedData());
|
WebSocketBody body = new WebSocketBody(directDecompress.getDecompressedData());
|
||||||
Log.getDynamicLogger(logTag).info("协议:{},命令数:{}", useHeader, +body.getBodyList().size());
|
Log.getDynamicLogger(logTag).info("协议:{},命令数:{}", useHeader, body.getBodyList().size());
|
||||||
for (JSONObject json : body.getBodyList()) {
|
for (JSONObject json : body.getBodyList()) {
|
||||||
WSData parse = WSData.parse(json);
|
WSData parse = WSData.parse(json);
|
||||||
liveDatabasesService.getLiveDatabase(roomConfig.getRoomId()).addSource(parse);
|
liveDatabasesService.getLiveDatabase(roomConfig.getRoomId()).addSource(parse);
|
||||||
|
@ -104,7 +104,7 @@ public abstract class SQLiteManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T extends AbsDatabasesBean> void add(T t) {
|
protected synchronized <T extends AbsDatabasesBean> void add(T t) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
try (PreparedStatement statement = getConnection().prepareStatement(buildInsertSql(t))) {
|
try (PreparedStatement statement = getConnection().prepareStatement(buildInsertSql(t))) {
|
||||||
JSONObject json = t.toJson();
|
JSONObject json = t.toJson();
|
||||||
@ -162,7 +162,7 @@ public abstract class SQLiteManager {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T extends AbsDatabasesBean> void update(T t) {
|
protected synchronized <T extends AbsDatabasesBean> void update(T t) {
|
||||||
try (PreparedStatement statement = getConnection().prepareStatement(buildUpdateSql(t))) {
|
try (PreparedStatement statement = getConnection().prepareStatement(buildUpdateSql(t))) {
|
||||||
JSONObject json = t.toJson();
|
JSONObject json = t.toJson();
|
||||||
Set<String> keySet = json.keySet();
|
Set<String> keySet = json.keySet();
|
||||||
@ -367,7 +367,7 @@ public abstract class SQLiteManager {
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T extends AbsDatabasesBean> boolean delete(T t) {
|
protected synchronized <T extends AbsDatabasesBean> boolean delete(T t) {
|
||||||
Statement statement = null;
|
Statement statement = null;
|
||||||
try {
|
try {
|
||||||
statement = getConnection().createStatement();
|
statement = getConnection().createStatement();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user