此代码非常有用,并且连接到我运行的套接字服务器:
var socket = io('http://localhost:8888');
socket.on('news', function (data) {
console.log(data);
socket.emit('evento', { my: 'data' });
});
socket.on('disconnect', function () {
console.log('user disconnected');
});
socket.on('connect', function () {
console.log('user connect');
var data = 'ddsds';
socket.emit('evento', { my: 'data' });
});
另一方面,当我尝试使用WebSocket()
时,它无法连接。这是不起作用的代码:
var socket = new WebSocket('ws://localhost:8888');
// Open the socket
socket.onopen = function(event) {
// Send an initial message
socket.send('I am the client and Im listening!');
}
// Listen for messages
socket.onmessage = function(event) {
console.log('Client received a message',event);
};
// Listen for socket closes
socket.onclose = function(event) {
console.log('Client notified socket has closed',event);
};
socket.onerror = function(event) {
console.log('error: ',event);
};
这不是代码中的错误;我认为有一种不同的连接方式。我需要使用WebSocket();
来工作。任何帮助将不胜感激!!
答案 0 :(得分:1)
socket.io
是在WebSocket之上运行的东西(使用WebSocket作为它支持的传输之一)。它在WebSocket之上添加了新的语义,因此您无法直接将socket.io
方法和事件与WebSocket对象一起使用。
socket.io
将选择WebSocket传输(如果可用),因此您不需要使用第二个示例 - 第一个应该正常工作并自动使用WebSockets(如果可用)。
请参阅this answer和this answer,了解如何使用socket.io的最小化,gzip压缩和缓存版本,使其更小更快。