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客戶端伺服器
- Easyvision中的伺服器與客戶端伺服器客戶端
- HTML5離線應用與客戶端儲存HTML客戶端
- 4.1.7.2.5 與快速應用程式通知整合的Oracle客戶端Oracle客戶端
- 03. 實現客戶端應用程式客戶端
- Laravel後臺作為客戶端,socket.io作為服務端,App或其他作為另一個客戶端Laravel客戶端服務端APP
- YUM源伺服器搭建與客戶端配置使用伺服器客戶端
- Kubernetes官方java客戶端之三:外部應用Java客戶端
- Kubernetes官方java客戶端之四:內部應用Java客戶端
- C#Socket伺服器與客戶端的開發(3)C#伺服器客戶端
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- 客戶端 post ,get 訪問伺服器客戶端伺服器
- php與ethereum客戶端互動PHP客戶端
- Golang 實現客戶端與伺服器端UDP協議連線通訊Golang客戶端伺服器UDP協議
- 一段最簡單的使用socket.io進行伺服器和客戶端通訊的例子程式碼伺服器客戶端
- 客戶端解析伺服器響應的multipart/form-data資料客戶端伺服器ORM
- 《球球大作戰》原始碼解析:伺服器與客戶端架構原始碼伺服器客戶端架構
- Swoole 協程 MySQL 客戶端與非同步回撥 MySQL 客戶端的對比MySql客戶端非同步
- 伺服器獲取真實客戶端 IP伺服器客戶端
- 使用 WebSocket 客戶端連線 MQTT 伺服器Web客戶端MQQT伺服器
- Redis原始碼剖析——客戶端和伺服器Redis原始碼客戶端伺服器
- SseEmitter 伺服器向客戶端推送訊息MIT伺服器客戶端
- 客戶端怎麼連線到伺服器?客戶端伺服器
- spring系列—CAS客戶端與SpringSecurity整合Spring客戶端Gse
- Zookeeper客戶端使用與叢集原理客戶端
- 實用的PostgreSQL客戶端:Postico for MacSQL客戶端Mac
- React 伺服器端渲染和客戶端渲染效果對比React伺服器客戶端
- Redis 6.0 客戶端快取的伺服器端實現Redis客戶端快取伺服器
- SAP UI渲染模式:客戶端渲染 VS 伺服器端渲染UI模式客戶端伺服器
- dubbo客戶端客戶端
- Pulsar客戶端客戶端
- mqtt 客戶端MQQT客戶端
- 實踐篇 -- Redis客戶端快取在SpringBoot應用的探究Redis客戶端快取Spring Boot
- 使用Java客戶端傳送訊息和消費的應用Java客戶端
- Windows10 VS2017 C++ Server Socket簡單伺服器端與客戶端WindowsC++Server伺服器客戶端
- 服務端,客戶端服務端客戶端
- 客戶端,服務端客戶端服務端