2017-02-19 119 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