A wrapper for the Phoenix Channels JavaScript client
-
git clone
this repository -
npm install
-
Ember.js v3.12 or above
-
Ember CLI v2.13 or above
-
Node.js v10 or above
You can see example usage in an implementation of the classic game Timeline.
You can test this against Chris McCord's Phoenix chat example project.
- Start the Phoenix chat example server as described in the repo
- Start your Ember server with
ember server
- Open your browser console then visit your app at http://localhost:4200
- You should see the channel communication in the console
your-ember-app> ember install ember-phoenix-channel
const channelService = this.get('channelService');
channelService.connect().then(()=> {
return channelService.joinChannel('someChannel', 'someTopicType'); #see below for info about topic type
}).then((channel) => {
...
});
// some up a handler
channel.on(someTopic, (response)=> {
// do something
});
// push a message to the channel
channel.push("some-event", {payload: somePayload}).receive("error", e=> console.log(e));
To organize your channel responses in a convenient manner, you can subclass the channel service and override the
# app/services/my-channel-service.js
import Ember from 'ember';
import ChannelService from 'ember-phoenix-channel/services/channel-service';
const { computed, inject } = Ember;
export default ChannelService.extend({
channelTopicHandlers: {
someTopicType: {
"some-event1": function(message) {
...
},
"some-event2": function(someObject) {
this.get('store').pushPayload(someObject);
...
},
}
}
}
When you join the channel, add the topic to attach the appropriate handlers. For example to use the handlers above:
const channel = channelService.joinChannel(`game:${gameId}`, "someTopicType");
See the Contributing guide for details.
This project is licensed under the MIT License.