我有两个问题
1)我的项目包含dagger2,retofit2,kotlin v1.0.21,rxJava2,OkHttp3
我想在项目中实施SocketIO
我应该如何实施?
2)我尝试了几种方法但无法连接socketIO
所以我尝试在给定代码下面的代码示例但仍然无法连接套接字..请提前帮助thanx
package com.easymakers.myapplication
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity
import android.view.View
import io.socket.client.IO
import io.socket.client.Socket
import io.socket.emitter.Emitter
import kotlinx.android.synthetic.main.activity_main.*
import javax.net.ssl.SSLContext
class MainActivity : AppCompatActivity() {
private var socket : Socket? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
fab.setOnClickListener { view ->
connect(view)
// connect1()
}
}
private fun connect(view : View) {
val opts = IO.Options()
opts.port= 5000
opts.reconnection = false
// opts.query =
socket = IO.socket("https://192.170.1.21",opts)
socket?.connect()
?.on(Socket.EVENT_CONNECT, {
Snackbar.make(view, "Socket connected", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
})
?.on(Socket.EVENT_DISCONNECT, { println("disconnected") })
}
private fun connect1(){
val sc = SSLContext.getInstance("SSL")
sc.init(null, null, null)
val opts = IO.Options()
opts.port = 3000
opts.secure = true
opts.forceNew = true
opts.reconnection = true
val socket = IO.socket("https://103.69.190.10",opts)
socket.on("connection", Emitter.Listener {
println("Connected")
socket.emit("foo", "hi")
socket.disconnect()
}).on("event", Emitter.Listener { }).on(Socket.EVENT_DISCONNECT, Emitter.Listener { })
socket.connect()
}
}
答案 0 :(得分:2)
我使用了这个库Socket.IO-client.java
使用此代码就足够了OnCreate方法。即使使用身份验证令牌,它也是可选的。
val opts = IO.Options()
opts.query = "token=XXXXXXXXX"
var socket = IO.socket("https://MYSERVERSOCKET.com", opts)
socket?.on(Socket.EVENT_CONNECT, {
Log.d("","==============================CONNECTED")
})?.on(Socket.EVENT_DISCONNECT, {
Log.d("","==============================OFF")
})
开始连接
btnFindNext.setOnClickListener{
socket.connect()
}
和一个发光的例子
btnOtro.setOnClickListener{
val obj = JSONObject()
obj.put("var1", "5ab0a8931522f51fac37f5a1")
obj.put("var2", "91.8392894")
obj.put("var3", "-93.8392894")
socket.emit("SendData", obj)
}
答案 1 :(得分:1)
1.1)https://github.com/socketio/socket.io-client-java
<强>摇篮强>
在build.gradle中将其添加为Android Studio的gradle依赖项:
compile ('io.socket:socket.io-client:1.0.0') {
// excluding org.json which is provided by Android
exclude group: 'org.json', module: 'json'
}
Socket.IO Server 1.x suppport
当前版本的socket.io-client-java不支持socket.io 服务器1.x.请改用socket.io-client-java 0.9.x。
1.2)在github中你可能会看到: 此链接将跟随您到支持1.x和上层服务器版本的更新版本。 链接:http://socketio.github.io/socket.io-client-java/project-summary.html
它有下一个依赖:
compile 'io.socket:socket.io-client:1.0.0-SNAPSHOT'
2)https://socket.io/get-started/chat/
下一步,您必须启动node.js服务器
集成Socket.IO由两部分组成:
1)与Node.JS HTTP Server集成(或安装)的服务器: socket.io
2)在浏览器端加载的客户端库: socket.io-client在开发期间,socket.io为客户端提供服务 我们会自动为我们看到,所以现在我们只需要安装 一个模块:
npm install --save socket.io