2016-02-26 26 views
6

Tôi có một rất đơn giản socket.io trò chuyện ví dụ, và các mã phía máy chủ là như thế này:Làm thế nào để kết nối với socket.io từ một máy khách ws?

https://github.com/js-demos/socketio-chat-demo/blob/master/index.js

var express = require('express'); 
var app = express(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.use(express.static('public')); 

io.on('connection', function(socket){ 
    socket.on('chat message', function(msg){ 
    io.emit('chat message', msg); 
    }); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

Phía khách hàng sử dụng các ổ cắm io mã để kết nối nó và đang làm việc tốt:

https://github.com/js-demos/socketio-chat-demo/blob/master/public%2Findex.html

<script> 
    var socket = io(); 
    $('form').submit(function(){ 
    socket.emit('chat message', $('#m').val()); 
    $('#m').val(''); 
    return false; 
    }); 
    socket.on('chat message', function(msg){ 
    $('#messages').append($('<li>').text(msg)); 
    }); 
</script> 

Nhưng tôi muốn sử dụng một số khách hàng WebSocket khác để kết nối t ông chủ, nói, wscat:

npm install -g wscat 
wscat ws://localhost:3000 

Nhưng nó không thể kết nối, với lỗi này:

error: Error: socket hang up 

là url của tôi ws://localhost:3000 là sai? Làm thế nào để làm cho nó hoạt động?

PS: Bạn có thể xem dự án này https://github.com/js-demos/socketio-chat-demo/ và thử nó

Trả lời

18

Từ mục Tools Chrome Dev, tôi thấy url WebSocket thực, nó phải là:

ws://localhost:3000/socket.io/?EIO=3&transport=websocket 

Sử dụng url này với wscat hoạt động tốt

Các vấn đề liên quan