summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-10-07 17:19:52 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-10-07 17:19:52 +0900
commite05acb8d18059c01e5789db043db82e4abfbd9d5 (patch)
treedd55d03d88794e13d5d78333d0acc769da4f7a5a /src/server/api
parentImprove readability a little (diff)
downloadsharkey-e05acb8d18059c01e5789db043db82e4abfbd9d5.tar.gz
sharkey-e05acb8d18059c01e5789db043db82e4abfbd9d5.tar.bz2
sharkey-e05acb8d18059c01e5789db043db82e4abfbd9d5.zip
後方互換性を追加
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/stream/index.ts4
-rw-r--r--src/server/api/streaming.ts22
2 files changed, 24 insertions, 2 deletions
diff --git a/src/server/api/stream/index.ts b/src/server/api/stream/index.ts
index 04136b3506..743d77b2a3 100644
--- a/src/server/api/stream/index.ts
+++ b/src/server/api/stream/index.ts
@@ -174,7 +174,7 @@ export default class Connection {
* チャンネルに接続
*/
@autobind
- private connectChannel(id: string, params: any, channelClass: { new(id: string, connection: Connection): Channel }) {
+ public connectChannel(id: string, params: any, channelClass: { new(id: string, connection: Connection): Channel }) {
const channel = new channelClass(id, this);
this.channels.push(channel);
channel.init(params);
@@ -185,7 +185,7 @@ export default class Connection {
* @param id チャンネルコネクションID
*/
@autobind
- private disconnectChannel(id: string) {
+ public disconnectChannel(id: string) {
const channel = this.channels.find(c => c.id === id);
if (channel) {
diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts
index 4518d21c3f..b7793eb284 100644
--- a/src/server/api/streaming.ts
+++ b/src/server/api/streaming.ts
@@ -5,6 +5,7 @@ import Xev from 'xev';
import MainStreamConnection from './stream';
import { ParsedUrlQuery } from 'querystring';
import authenticate from './authenticate';
+import channels from './stream/channels';
module.exports = (server: http.Server) => {
// Init websocket server
@@ -22,6 +23,27 @@ module.exports = (server: http.Server) => {
const main = new MainStreamConnection(connection, ev, user, app);
+ // 後方互換性のため
+ if (request.resourceURL.pathname !== '/streaming') {
+ main.sendMessageToWs = (type: string, payload: any) => {
+ if (type == 'channel') {
+ type = payload.type;
+ payload = payload.body;
+ }
+ connection.send(JSON.stringify({
+ type: type,
+ body: payload
+ }));
+ };
+ if (request.resourceURL.pathname === '/') {
+ main.connectChannel(Math.random().toString(), null,
+ request.resourceURL.pathname === '/' ? channels.homeTimeline :
+ request.resourceURL.pathname === '/local-timeline' ? channels.localTimeline :
+ request.resourceURL.pathname === '/hybrid-timeline' ? channels.hybridTimeline :
+ request.resourceURL.pathname === '/global-timeline' ? channels.globalTimeline : null);
+ }
+ }
+
connection.once('close', () => {
ev.removeAllListeners();
main.dispose();