gpt4 book ai didi

javascript - Socket.io 广播到房间不工作

转载 作者:搜寻专家 更新时间:2023-10-30 21:28:13 25 4
gpt4 key购买 nike

在使用 "socket.io": "^2.0.4"

的 node.js 应用程序中

Socket.io 是这样初始化的:

export let io: any;

io = socketio(server,
{
secure: secure,
rejectUnauthorized: false,
},
);

io.set('origins', '*:*');
io.origins('*:*');

io.on('connection', (socket) => {
socket.on('message', async (data) => {
}
}

我想向房间内的所有 socket 广播消息

所以我做到了:

io.to(roomName).emit('message', data);

我在 io().to().emit() 之后登录,房间名称和数据都没有问题

但是 message 中没有事件传递,我错过了什么?

最佳答案

你的 sockect.IO 是否在服务器端正确配置,这是一个基于 rxjs 的低级套接字服务 api,适用于 Angular,你可以使用

import { Injectable } from '@angular/core';
import * as socketio from 'socket.io-client';
import {environment} from '../../../environments/environment';
import {Observable} from 'rxjs/Observable';
import {BehaviorSubject} from 'rxjs/BehaviorSubject';

@Injectable()
export class SocketService {

private socket: SocketIOClient.Socket;
connected$ = new BehaviorSubject<boolean>(false);

constructor() {
this.socket = socketio(environment.socket.baseUrl, environment.socket.config);
this.socket.on('connect', () => this.connected$.next(true));
this.socket.on('disconnect', () => this.connected$.next(false));
}

join(room: string) {
// auto rejoin after reconnect mechanism
this.connected$.subscribe(connected => {
if (connected) {
this.socket.emit('join', {room});
}
});
}

disconnect() {
this.socket.disconnect();
this.connected$.next(false);
}

emit(event: string, data?: any) {

console.group();
console.log('----- SOCKET OUTBAND -----');
console.log('Action: ', event);
console.log('Payload: ', data);
console.groupEnd();

this.socket.emit(event, data);
}

listen(event: string): Observable<any> {
return new Observable( observer => {

this.socket.on(event, data => {

console.group();
console.log('----- SOCKET INBOUND -----');
console.log('Action: ', event);
console.log('Payload: ', data);
console.groupEnd();

observer.next(data);
});
// dispose of the event listener when unsubscribed
return () => this.socket.off(event);
});
}

}

这段代码来自 Avatsaev 感谢他分享了他使用套接字 Io 和 NGRX 的很酷的应用程序,你可以看到它是如何与 his service code 一起使用的

关于javascript - Socket.io 广播到房间不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49033641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com