3

私は Web アプリを開発しており、チャットを統合しようとしています (今のところ)。これを行うためにSpringとAtmosphereを使用しています。なんとかチャットが機能するようになりましたが、問題が発生したようです。別のサーブレットで @ManagedService を使用しており (atmosphere-chat-multiroom の例と同様)、Spring アプリケーション内にある Bean にアクセスする必要があります。私が使用している残りのサーブレットでは、これは問題なく機能しますが、Atmosphere ManagedService でこれを行うとなると、サービスは常に null として返されます。

私に何ができるのか、誰にも手がかりがありますか?

@ManagedService(path = "{room: [a-zA-Z][a-zA-Z_0-9]*}")
@Singleton
public class ChatRoom {
private final Logger logger = LoggerFactory.getLogger(ChatRoom.class);

private final ConcurrentHashMap<String, String> users = new ConcurrentHashMap<String, String>();
private String chatroomName;
private String mappedPath;
private BroadcasterFactory factory;
@Autowired
IFriendsServices friendServices;

@Message(encoders = { JacksonEncoder.class }, decoders = { UserDecoder.class })
public void onPrivateMessage(ChatUserMessageDTO user) throws IOException {
    String userUUID = users.get(user.getUser());
    friendServices.createChatMessage(user.getUser(), user.getSource(), user.getMessage());
    if (userUUID != null) {
        AtmosphereResource r = AtmosphereResourceFactory.getDefault().find(userUUID);
        if (r != null) {
            ChatProtocolMessageDTO m = new ChatProtocolMessageDTO(user.getSource(), user.getMessage(),
                    users.keySet(), factory.lookupAll());
            factory.lookup(mappedPath).broadcast(m, r);
        }
    }
}
4

1 に答える 1