您在上面使用的模式是与套接字交互的推荐方式(即在“连接”事件触发时获取socket 实例,然后从该套接字实例调用emit(),等等)。
如果我正确理解您的客户端要求,您希望通过 Web 套接字向服务器发送数据 - 您确定您已在客户端和服务器之间建立 Web 套接字连接的套接字吗?
例如,如果您将以下内容添加到客户端代码中,您应该会在控制台中看到一条成功消息:
const socket = io.connect('YOUR SERVER ADDRESS');
socket.on('connect', () => {
console.log('connected to server!');
// [UPDATE]
// This assumes you have a <button> element on your page. When
// clicked, a message will be sent to the server via sockets
document.querySelector('button').addEventListener('click', (event) => {
// Prevent button click reloading page
event.preventDefault();
// Send message to server via socket
socket.emit('MESSAGE_ID', 'test message from client' + new Date());
});
});
更新
这显示了您的原始服务器代码,扩展了接收和打印通过套接字从客户端发送的数据所需的详细信息:
io.sockets.on('connection', function (socket) {
console.log('User connected !');
// Register a server handler for any messages from client on MESSAGE_ID channel
socket.on('MESSAGE_ID', (message) => {
// Print the message received from client in console
console.log('message from client', message);
})
retrieveDictionnary((dictionnary) =>{
socket.emit('dictionnarySend', dictionnary);
}
}