我想用 socket.io in swift (IOS) 向特定客户端发送消息?
I want to send a message to a particular client with socket.io in swift (IOS)?
我在 nodejs
中的代码没有问题并且工作正常。我可以使用以下代码从服务器向特定客户端发送消息(我使用电子邮件发送消息):
io.sockets.in('julia.girldeveloper@example.com').emit('messages', 'Hello i am julia');
但是在 Swift 我不知道如何向特定客户端发送消息。
谁能帮我把上面的代码写成Swift?
您应该在服务器和客户端上配置它。
这里 之前但我也会在这里解释。
您应该为每个连接的用户提供 ID。将其存储在数据库或任何可以使用的地图上。请记住 ID 必须是唯一的,例如 emails
、userid
或任何唯一的。
Server.js
const sessionsMap = {}; // I save user ID here
io.on('connection', (socket) => {
socket.emit('askForUserId');
socket.on('userIdReceived', (userId) => {
sessionsMap[userId] = socket.id; // save the users on database or Object up to you
});
socket.on('send', (message) => {
const receiverId = sessionsMap[message.receiverId];
const messageData = message.data;
socket.broadcast.to(receiverId).emit('mymessage', messageData);
});
});
客户
抱歉,我不知道 swift 但它是一样的(我希望你明白这一点),服务器处理发送给谁和到达谁的消息。
const userId = 'julia@mail.me'; // this should be unique
io.on('askForUserId', () => {
io.emit(userId); // your connected user ID save it.
});
io.on('mymessage', (message) => {
console.log('Yoho had message from', message.senderId)
console.log(message.text)
});
// send message to other people
io.emit('send', { text: 'Hellow', receiverId: 'john@doe.net', senderId: 'julia@mail.me' })
您可以将以下代码用于 Swift 语言。
import SocketIO
import Foundation
let serverURL = "YourServerURL"
class SocketOpration {
static let shared = SocketOpration(socketURL: URL(string: serverURL)!)
let socketURL: URL
var socket:SocketIOClient!
var manager:SocketManager!
init(socketURL: URL) {
self.socketURL = socketURL
self.manager = SocketManager(socketURL: self.socketURL, config: [.log(false)])
self.socket = self.manager.defaultSocket
}
func setup() {
socket.on(clientEvent: .connect) {[weak self] data, ack in
print("socket connected")
}
socket.on(clientEvent: .disconnect) {[weak self] data, ack in
print("socket disconnected")
}
// Get emit Call via On method ( emit will fire from Node )
socket.on("messages") { [weak self](data, ack) in
if data.count > 0 {
}
}
}
}
我在 nodejs
中的代码没有问题并且工作正常。我可以使用以下代码从服务器向特定客户端发送消息(我使用电子邮件发送消息):
io.sockets.in('julia.girldeveloper@example.com').emit('messages', 'Hello i am julia');
但是在 Swift 我不知道如何向特定客户端发送消息。
谁能帮我把上面的代码写成Swift?
您应该在服务器和客户端上配置它。
这里
您应该为每个连接的用户提供 ID。将其存储在数据库或任何可以使用的地图上。请记住 ID 必须是唯一的,例如 emails
、userid
或任何唯一的。
Server.js
const sessionsMap = {}; // I save user ID here
io.on('connection', (socket) => {
socket.emit('askForUserId');
socket.on('userIdReceived', (userId) => {
sessionsMap[userId] = socket.id; // save the users on database or Object up to you
});
socket.on('send', (message) => {
const receiverId = sessionsMap[message.receiverId];
const messageData = message.data;
socket.broadcast.to(receiverId).emit('mymessage', messageData);
});
});
客户
抱歉,我不知道 swift 但它是一样的(我希望你明白这一点),服务器处理发送给谁和到达谁的消息。
const userId = 'julia@mail.me'; // this should be unique
io.on('askForUserId', () => {
io.emit(userId); // your connected user ID save it.
});
io.on('mymessage', (message) => {
console.log('Yoho had message from', message.senderId)
console.log(message.text)
});
// send message to other people
io.emit('send', { text: 'Hellow', receiverId: 'john@doe.net', senderId: 'julia@mail.me' })
您可以将以下代码用于 Swift 语言。
import SocketIO
import Foundation
let serverURL = "YourServerURL"
class SocketOpration {
static let shared = SocketOpration(socketURL: URL(string: serverURL)!)
let socketURL: URL
var socket:SocketIOClient!
var manager:SocketManager!
init(socketURL: URL) {
self.socketURL = socketURL
self.manager = SocketManager(socketURL: self.socketURL, config: [.log(false)])
self.socket = self.manager.defaultSocket
}
func setup() {
socket.on(clientEvent: .connect) {[weak self] data, ack in
print("socket connected")
}
socket.on(clientEvent: .disconnect) {[weak self] data, ack in
print("socket disconnected")
}
// Get emit Call via On method ( emit will fire from Node )
socket.on("messages") { [weak self](data, ack) in
if data.count > 0 {
}
}
}
}