🚀 Launch 1.0

This commit is contained in:
2025-10-05 03:27:33 +08:00
parent 8ef05de8ad
commit bc23269778
3 changed files with 26 additions and 31 deletions

View File

@@ -29,14 +29,14 @@ class SolarNetworkConnect : JavaPlugin() {
private var messages: Map<String, String> = mapOf()
private fun handleWebSocketPacket(packet: WebSocketPacket) {
// logger.info("Received WebSocket packet: type=${packet.type}")
logger.info("Received WebSocket packet: type=${packet.type}")
if (packet.type.startsWith("messages") && packet.data != null) {
try {
when (packet.type) {
"messages.new" -> {
val message = SnChatMessage.fromJson(packet.data)
// Ignore automated accounts
if (message.sender.account.automatedId.isNullOrBlank()) return;
if (message.sender.account.automatedId.isNullOrBlank().not()) return;
// Only some rooms got synced
if (syncChatRooms.isEmpty() || syncChatRooms.contains(message.chatRoomId)) {
val roomName = message.chatRoom.name ?: "DM"

View File

@@ -2,6 +2,7 @@ package dev.solsynth.snConnect.services
import dev.solsynth.snConnect.models.WebSocketPacket
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.channelFlow
@@ -47,9 +48,10 @@ class SnService(private val baseUrl: String, val clientId: String, val clientSec
.build()
fun connect() {
logger.info("Attempting WebSocket connection to $url")
websocket = client.newWebSocket(request, object : WebSocketListener() {
override fun onOpen(webSocket: WebSocket, response: Response) {
logger.info("WebSocket connection opened to $url")
logger.info("WebSocket connection opened successfully to $url")
}
override fun onMessage(webSocket: WebSocket, text: String) {

View File

@@ -1,29 +1,23 @@
package dev.solsynth.snConnect
import dev.solsynth.snConnect.services.SnService
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withTimeoutOrNull
import org.junit.jupiter.api.Test
import java.util.logging.Logger
class WebSocketTest {
private val logger = Logger.getLogger(WebSocketTest::class.java.name)
@Test
fun testWebSocketConnection() = runBlocking {
suspend fun main() {
val service = SnService(
baseUrl = "http://localhost:8080", // Replace with actual test server URL
clientId = "testClientId",
baseUrl = "https://api.solian.app", // Replace with actual test server URL
clientId = "goatcraft",
clientSecret = "testClientSecret",
botApiKey = "testBotApiKey"
botApiKey = "02-l7ARXnEimQaBY0Dj3SQ.g4UTdShR9GiNWBDjC7qm9Xu83t0Vq8mQ2WPaTO8S-_j6EuKcWd0Kqb_hEkFlahmhfAd5lcH7j_-N8knSIXjo3X7OSFck0E_ogwluZpGSzqbYOrlBAQc9Rk1VhHVNu_W4fi9NR6NnUwpAgyTIh2RuRHk98oVa2I4Ie-NXPybb26N3i9wXv3-wXlkml0IOrhs3FRKMbcJNmKIzEYP0KQNqs3w9TAx0R2fe9DAAQ8WvPW5iPGSbyxr_fF4Qm7tQ0rQvg89x0cUGmKQHtCTeKa2WZi7UBTbw_b4SiHMqpLMxIDQBEZQGqkJ5r37_YCyCNqe5Huha86GG7bT__m6z5emeow"
)
print("server started")
// Collect from the flow for a limited time to avoid hanging on failure
val packets = withTimeoutOrNull(10000L) { // 10 seconds timeout
val collectedPackets = mutableListOf<String>()
service.connectWebSocketAsFlow().collect { packet ->
collectedPackets.add("Received packet: type=${packet.type}, endpoint=${packet.endpoint}")
logger.info(collectedPackets.last())
print(collectedPackets.last())
// In a real test, you might check packet contents or behavior
}
collectedPackets
@@ -31,7 +25,6 @@ class WebSocketTest {
// For this test, we're mainly checking that the flow can be created and the setup doesn't crash
// In real scenarios, you'd need a WebSocket server running at the specified URL
logger.info("WebSocket test finished. Packets received: ${packets?.size ?: 0}")
print("WebSocket test finished. Packets received: ${packets?.size ?: 0}")
assert(packets != null) // Flow started without immediate error
}
}