Я пытаюсь создать библиотеку, которая обеспечивает простой коммуникационный уровень для Tabris. js WebSockets и node.js ws модуль. Пока все работает. Я не уверен, правильно ли я поступаю, но вот что у меня есть для создания соединения.
клиент. js
const Apollo = require('Apollo').ApolloClient;
const apollo = new Apollo();
apollo.onConnection(client => {
console.log('right here i would like to add something')
//something like client.on(event, function() => {} )
})
сервер. js
const Apollo = require('Apollo').ApolloServer;
const apollo = new Apollo(4343);
apollo.onConnection()
Apollo. js
const WebSocket = require('ws');
//const WebSocket = require('./node_modules/ws')
class ApolloServer{
constructor(port){
console.log(port)
this.port = 4343;
if(port){
this.port = port;
}
this.wss = new WebSocket.Server({ port: this.port },function(){
console.log('started websocket server on port: ' + this.port )
});
}
onConnection(){
return new Promise(resolve => {
this.wss.on('connection', function connection(ws) {
console.log("ONCONNECTION")
this.ws = ws;
resolve(true)
})
})
}
on(){
this.ws.on('message', function incoming(message) {
console.log(message)
})
}
}
class ApolloClient{
constructor(host){
this.host = "ws://127.0.0.1:4343"
if(host){
this.host = host
}
this.socket = new WebSocket(this.host, 'chat-protocol');
console.log('client')
}
on_connection(){
return new Promise(resolve => {
this.socket.onopen = function(event) {
console.log('ONCONNECTION')
resolve(true)
}
})
}
onConnection(_function){
console.log(_function)
this.on_connection().then(resolve => {
console.log('connection')
_function()
})
}
//on(this, do this)
on(event, _function){
}
}
module.exports.ApolloServer = ApolloServer;
module.exports.ApolloClient = ApolloClient
моя основная цель - добавить оболочку почти как socket.io. Я не уверен, как будет работать что-то вроде client.on (event, function ()). apollo.onConnection()
для клиента, ожидающего установления соединения, пока он не выполнит переданную функцию, но я не знаю, как сделать это там, где функция будет запускаться после сравнения события, полученного от сервера