我有一个提要,用户可以在其中投票帖子
服务器>节点,快捷,socket.io v2.3.0
服务器> app.js
client.on('connection', socket =>{
socket.emit('success', {message: 'Server Accecpting Connections'});
// CLients connected
client.clients((error, clients) => {
if (error) throw error;
console.log(`<----- users connected ->`)
console.log(clients);
console.log(' ');
})
// Disconnected user
socket.on('disconnect',() =>{
console.log(`user disconnected ---> ${socket.id}`);
console.log(' ');
})
})服务器> votePost.js
const votePost = function(client){
client.on('connection', socket =>{
socket.on('votePost',async post =>{
try {
// logic
socket.emit('postVoted', {updatedPost})
}
} catch (error) {
console.log(error);
}
module.exports = votePostClient > vue CLI,vuex,socket.io v2.3.0,vue-socket.io v3.0.7
Client > main.js“配置:”
import VueSocketIO from 'vue-socket.io'
import SocketIO from "socket.io-client"
Vue.use(new VueSocketIO({
debug: true,
connection: SocketIO('http://localhost:3000'), //options object is Optional
vuex: {
store,
actionPrefix: "SOCKET_",
mutationPrefix: "SOCKET_"
}
})
);在post vuex模块中测试到服务器的连接从服务器(所有连接的套接字参见此消息)接收成功的消息
"SOCKET_success"(state, server) {
console.log(server.message);
},从组件向服务器发送数据的内部方法:
createVote(data){
const post = {SOMEPOSTDATA}
this.$socket.emit('votePost', post)
},接收从服务器创建的数据:vuex post模块(动作内部)
"SOCKET_updatedPost"({commit,state}, server) {
state.post = server.updatedPost
},此时,im从服务器接收更新的帖子,并在我看到更新的地方更新我的状态。但是--我需要每次使用--也可以看到更新后的帖子
为什么会发生这种事?我遗漏了什么?,当有人更新时,所有的用户都会看到它的变化。
发布于 2020-03-30 19:02:14
目前还不清楚您想要做什么,但是如果我理解正确的话,您希望在一个套接字触发“创建”事件之后,将“创建”事件发送到所有套接字。如果是的话:
socket.on('create',(name)=> {
io.of('/').emit('created', {name})
})问题是,由于某种原因,您在某个"create“函数中注册了"connection”事件,这似乎没有多大意义。您的io.on('connection')需要在某个高级模块中注册一次,并且在其范围内您需要注册连接套接字的所有特定事件。我没有你的完整代码,所以我不能说,但这是你需要看的东西。
发布于 2020-03-30 20:18:21
我自己找到了答案。问题是我用了
**socket.emit('postVoted', {updatedPost})**其中,socket.emit意味着更新的数据开始于创建该操作的用户,但将该事件更改为:
**io.sockets.emit**这样,每次使用都可以获得更新的数据。
显然不是套接字方面的专家,有关于套接字的好课程吗?谢谢
注意:我对使用2 .on('connection')方法有疑问,有关于如何实现这个模块的建议吗?
https://stackoverflow.com/questions/60935368
复制相似问题