socket.io 客戶端與伺服器應用
客戶端應用
這裡主要講vue的應用
1、npm安裝vue-socket.io
2、main.js裡引入
import VueSocketIO from 'vue-socket.io'
Vue.use(new VueSocketIO({
debug: true,
connection: process.env.NODE_ENV === 'development' ? 'http://localhost:7178' : 'http://xx.xx.xx.xx:7178',
vuex: {
store,
actionPrefix: 'SOCKET_',
mutationPrefix: 'SOCKET_'
}
}))
debug屬性:決定console是否列印socketio的執行日誌
vuex屬性:配置vuex外掛
store:註明store引用位置
import store from './store'
Prefix:決定引用的action和mutation的字首,會影響到socketio傳遞屬性的屬性名
3、客戶端提交給伺服器
this.$socket.emit('xxx', param) // 傳送資訊
xxx指提交的標籤
4、vuex接收到伺服器資料
假如前面設定了字首,則如果接受的是伺服器SYS_S他的訊息,則這裡應該補上字首SOCKET_,變為SOCKET_SYS_STA
const mutations = {
// SOCKET連線事件
SOCKET_CONN: (state, data) => {
console.log('socket連線', data)
},
SOCKET_SYS_STA: (state, data) => {
state.sysSta = data
},
}
5、不使用vuex,直接接收伺服器資料
xxx為訂閱訊息的名稱,這裡不用加字首:
this.sockets.listener.subscribe('xxx', (data) => {
console.log('訂閱訊息更新', data)
})
注意這裡listener一定要加上,官方的示例直接是this.sockets.subscribe,實測這樣是沒用的
客戶端取消訂閱指定訊息:
this.sockets.listener.unsubscribe('xxx')
伺服器應用
這裡主要講java伺服器端應用
1、pom.xml新增依賴
<dependency>
<groupId>com.corundumstudio.socketio</groupId>
<artifactId>netty-socketio</artifactId>
</dependency>
2、配置socketio初始化及接收客戶端資訊
/**
* socketIO 伺服器例項
*/
private SocketIOServer server;
/**
* socketIO伺服器初始化
* @param port
*/
public void init(int port) {
Configuration config = new Configuration();
//限制socket.io訪問物件
// config.setHostname("192.168.7.2");
config.setPort(port);
server = new SocketIOServer(config);
// 新增客戶端連線監聽器
server.addConnectListener(client -> {
client.sendEvent("CONN", "hello");
logger.info("web client conn:"+client.getSessionId().toString());
});
//監聽客戶端事件:事件名稱
//監聽xxx訂閱事件 xxx這裡是代值,實際按情況填入
server.addEventListener("xxx", String.class, new DataListener<String>() {
@Override
public void onData(SocketIOClient client, String data, AckRequest ackSender) throws Exception {
});
//新增客戶端斷開連線事件
server.addDisconnectListener(client -> {
logger.info("web client disConn:"+client.getSessionId().toString());
iotWebSocketClientDataPoolProvider.removeClient(client.getSessionId());
});
server.start();
logger.warn("websocket init !!!");
}
3、向指定客戶端傳送資訊
server.getClient(id).sendEvent("xxx",data);
id指客戶端對應的唯一標誌,型別是UUID,xxx是代指屬性
4、向所有客戶端統一傳送
server.getBroadcastOperations().sendEvent("SYS_STA", data);
相關文章
- .net socket.io客戶端使用過程客戶端
- Web 應用客戶端渲染和伺服器端渲染的比較Web客戶端伺服器
- oracle 客戶端與伺服器端的關係Oracle客戶端伺服器
- js 客戶端與伺服器端的通訊JS客戶端伺服器
- 4.1.7.2.5 與快速應用程式通知整合的Oracle客戶端Oracle客戶端
- HTML5離線應用與客戶端儲存HTML客戶端
- redis伺服器/客戶端安裝與配置Redis伺服器客戶端
- 不安裝oracle客戶端部署PB應用Oracle客戶端
- Laravel後臺作為客戶端,socket.io作為服務端,App或其他作為另一個客戶端Laravel客戶端服務端APP
- YUM源伺服器搭建與客戶端配置使用伺服器客戶端
- ASP.NET:郵件伺服器與客戶端ASP.NET伺服器客戶端
- 在netweaver中建立應用程式客戶端客戶端
- 小弟求救伺服器-客戶端程式伺服器客戶端
- C#Socket伺服器與客戶端的開發(3)C#伺服器客戶端
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- 客戶端 post ,get 訪問伺服器客戶端伺服器
- Redis從客戶端登入伺服器Redis客戶端伺服器
- Oracle客戶端連線伺服器教程Oracle客戶端伺服器
- 【windows socket+TCP伺服器客戶端】WindowsTCP伺服器客戶端
- 【windows socket+UDP伺服器客戶端】WindowsUDP伺服器客戶端
- 【windows socket+HTTP伺服器客戶端】WindowsHTTP伺服器客戶端
- Kubernetes官方java客戶端之三:外部應用Java客戶端
- MQTT 客戶端應用及常見問題(C#)MQQT客戶端C#
- IM客戶端Socks 5代理協議應用客戶端協議
- 急!!jsp可以啟動客戶端應用程式嗎?JS客戶端
- php與ethereum客戶端互動PHP客戶端
- vncserver建立與客戶端連線VNCServer客戶端
- Golang 實現客戶端與伺服器端UDP協議連線通訊Golang客戶端伺服器UDP協議
- 客戶端到伺服器端的通訊過程客戶端伺服器
- 客戶端解析伺服器響應的multipart/form-data資料客戶端伺服器ORM
- 一段最簡單的使用socket.io進行伺服器和客戶端通訊的例子程式碼伺服器客戶端
- Swoole 協程 MySQL 客戶端與非同步回撥 MySQL 客戶端的對比MySql客戶端非同步
- Kubernetes官方java客戶端之四:內部應用Java客戶端
- Redis原始碼剖析——客戶端和伺服器Redis原始碼客戶端伺服器
- 伺服器獲取真實客戶端 IP伺服器客戶端
- 使用 WebSocket 客戶端連線 MQTT 伺服器Web客戶端MQQT伺服器
- 客戶端怎麼連線到伺服器?客戶端伺服器
- 【轉載】MySQL客戶端伺服器協議MySql客戶端伺服器協議