@@ -2,7 +2,7 @@ package org.codeoverflow.chatoverflow.requirement.service.tipeeestream
2
2
3
3
import java .util .Calendar
4
4
5
- import io .socket .client .Socket
5
+ import io .socket .client .{ IO , Socket }
6
6
import org .codeoverflow .chatoverflow .WithLogger
7
7
import org .codeoverflow .chatoverflow .connector .Connector
8
8
import org .json .JSONObject
@@ -14,6 +14,7 @@ import org.json.JSONObject
14
14
*/
15
15
class TipeeestreamConnector (override val sourceIdentifier : String ) extends Connector (sourceIdentifier) with WithLogger {
16
16
private val TIMEOUT = 10000
17
+ private val SOCKET_URL = " https://sso-cf.tipeeestream.com"
17
18
private val tipeeeStreamListener = new TipeeestreamListener
18
19
override protected var requiredCredentialKeys : List [String ] = List (" apiKey" , " username" )
19
20
override protected var optionalCredentialKeys : List [String ] = List ()
@@ -30,8 +31,9 @@ class TipeeestreamConnector(override val sourceIdentifier: String) extends Conne
30
31
* @return if the socket could start successfully
31
32
*/
32
33
private def startSocket (): Boolean = {
33
- var connected : Option [Boolean ] = None
34
+ @ volatile var connected : Option [Boolean ] = None
34
35
val thread = Thread .currentThread
36
+ socket = Some (IO .socket(SOCKET_URL ).connect())
35
37
socket.get.on(Socket .EVENT_CONNECT , (_ : Any ) => {
36
38
logger info " Connected to TipeeStream Socket.io"
37
39
socket.get.emit(" join-room" , AUTH_OBJECT )
@@ -40,13 +42,14 @@ class TipeeestreamConnector(override val sourceIdentifier: String) extends Conne
40
42
tipeeeStreamListener.onSocketEvent(objects)
41
43
})
42
44
connected = Some (true )
43
- connected.notifyAll()
44
45
})
45
46
socket.get.on(Socket .EVENT_CONNECT_ERROR , (e : Any ) => {
46
47
logger warn s " Could not connect to TipeeeStream socket: "
47
- logger warn e.asInstanceOf [Array [Object ]].mkString(" ," )
48
+ e match {
49
+ case array : Array [Any ] => logger warn array.mkString(" , " )
50
+ case other => logger warn other.toString
51
+ }
48
52
connected = Some (false )
49
- connected.notifyAll()
50
53
})
51
54
socket.get.on(Socket .EVENT_CONNECT_TIMEOUT , (_ : Any ) => {
52
55
logger warn s " $sourceIdentifier socket timed out "
@@ -59,7 +62,11 @@ class TipeeestreamConnector(override val sourceIdentifier: String) extends Conne
59
62
}
60
63
})
61
64
val start = Calendar .getInstance.getTimeInMillis
62
- while (connected.isEmpty && start + TIMEOUT > Calendar .getInstance.getTimeInMillis) connected.wait(TIMEOUT )
65
+ try {
66
+ while (connected.isEmpty && start + TIMEOUT > Calendar .getInstance.getTimeInMillis) Thread .sleep(100 )
67
+ } catch {
68
+ case _ : InterruptedException => // Just resume
69
+ }
63
70
connected.getOrElse({
64
71
logger warn " Could not connect to TipeeeStream socket: Timed out!"
65
72
false
0 commit comments