2017-02-19 155 views
0

我有一個uWebSockets服務器,因爲它似乎比socket.io服務器的性能更好。 因此,我有一臺服務器和它連接好,經過一些麻煩,我得到了index.html客戶端連接,但現在我無法從客戶端推送事件到服務器。我究竟做錯了什麼?uWebSockets - 將事件推送到服務器

var WebSocketServer = require('uws').Server, 
    express   = require('express'), 
    path   = require('path'), 
    app    = express(), 
    server   = require('http').createServer(), 
    createEngine = require('node-twig').createEngine; 

var wss = new WebSocketServer({server: server}); 

wss.on('connection', function (ws) { 

    ws.on('join', function (value) { 
     console.log('SOMEONE JUST JOINED'); 
    }); 

    ws.on('close', function() { 
     //console.log('stopping client interval'); 
     clearInterval(id); 
    }); 
}); 

server.on('request', app); 

server.listen(8080, function() { 
    console.log('Listening on http://localhost:8080'); 
}); 

的index.html

<script> 
     var host = window.document.location.host.replace(/:.*/, ''); 
     var server = new WebSocket('ws://' + host + ':8080'); 
     server.onmessage = function (event) { 
     updateStats(JSON.parse(event.data)); 
     }; 

     server.onopen = function (event) { 
     server.send("Here's some text that the server is urgently awaiting!"); 
     server.send('join'); 
     }; 

     function something() { 
     console.log('WORKED'); 
     server.send('join'); 
     } 

    </script> 

回答

0

您沒有在服務器端,它接收和對消息作出反應的事件偵聽器設置。像

ws.on('message', function (msg) { 
    // Do something with the message received from the client 
}); 
+0

你好。 我確實有 ws.on('join',function(value){ console.log('SOMEONE JUST JOINED'); }); 是('message')發送數據到服務器的全局方式? (服務器端或客戶端)socket.on('handler_name',cb) 和 (服務器端或客戶端)socket.emit('服務器端或客戶端端)socket.io服務器或客戶端代碼 handler_name',data); – TheMan68

+0

非常感謝您的幫助 – TheMan68

+0

我認爲沒有'join',因爲websockets不會因爲連接而不是組或會話的概念。 uws直接公開了一個websocket接口,而不是像socket.io這樣的高級框架API。因此它們不能直接比較,並且不會使用相同的API。你應該看看uws API的工作原理。 Afaik也是與node.js'ws'模塊的API相同的API。 – Matthias247