426状态:带有Node.js的WebSockets
426 Status: WebSockets with Node.js
我目前正在将我的应用程序从使用Socket.io切换到HTML5WebSocket。我假设我的问题在客户端和服务器的前几行中。当我在localhost上测试我的应用程序时,我的浏览器一直回复426(需要升级)状态。请阐明我的问题。。。
服务器代码
"use strict";
var session = require('./chat-session'),
serveStatic = require('serve-static'),
server = require('http').createServer(),
WebSocketServer = require('ws').Server,
wss = new WebSocketServer({server: server, port: 8181}),
express = require('express'),
app = express();
// Sockets with real-time data
// io = require('socket.io').listen(server),
// mongoose = require('mongoose');
app.use(express.static(__dirname + '/public')); // used for external files on client
let storage = session.default; // cache object for storage
// Routing refers to determining how an application responds to a client request to a particular endpoint
app.get('/', function(req, res){
res.sendFile(__dirname + '/public/index.html');
});
wss.on('connection', function(client){
client.on('join', (name) => {
client.nickname = name;
// check to see if nickname has been taken, if so, give random name
if(storage.users.indexOf(client.nickname) !== -1) {client.nickname = randomName();}
// tell all chatters that a new user has entered the room
client.broadcast.emit("enter", "* " + client.nickname + " * has connected");
storage.users.forEach((user) => {
client.emit('add chatter', user);
});
client.broadcast.emit('add chatter', client.nickname);
storage.channels.general.messages.forEach((message) => {
client.emit("message", message.name + ": " + message.data, 'general');
});
storage.users.push(client.nickname);
});
client.on('message', (message, room) => {
var nickname = client.nickname;
client.broadcast.emit("message", nickname + ": " + message, room);
client.emit("me", message); // send message to self
storeMessage(nickname, message, room); // store the message in chat-session
console.log(nickname + ' said: ' + message + " in room " + room);
});
// When client switches between tabs (rooms)
client.on('switch', (room) => {
storage.channels[room].messages.forEach((message) => {
if (message.name === client.nickname) {
client.emit("me", message.data, room);
} else {
client.emit("message", message.name + ": " + message.data, room);
}
});
});
// client.on('disconnect', () => {
// client.emit('disconnect', "client")
// });
});
//const PORT = 8080;
//server.listen(PORT);
客户端代码
// var server = io.connect("http://localhost:8080"); // connect to server
var server = new WebSocketServer("ws://localhost:8181");
var curRoom = $('.nav .active').attr('id'); // cache current room
server.on('connect', function(data){
nickname = prompt("What is your nickname?");
//while(nickname) TODO:make sure client cannot choose null
server.emit('join', nickname); // notify the server of the users nickname
});
//server.on('disconnect', function(data){
// server.emit('disconnect');
//});
// new chatter enters room
server.on('enter', function(data){
$('#messages').append($('<li style="background:#33cc33; color:white">').text(data));
});
// connected users section
server.on('add chatter', function(name){
var chatter = $('<li style="color:white; font-size:22px">' + name + '</li>').data('name', name);
$('#users').append(chatter);
});
// users' send message
server.on('message', function(message, room){
// only emit message to other users if they are in same channel
if (curRoom === room) {
$('#messages').append($('<li style="display:table; box-shadow: 6px 3px 8px grey;">').text(message));
play(); // invoke function to play sound to other clients
console.log('sound played here');
}
});
// differentiate how the client sees their message
server.on('me', function(message){
$('#messages').append($('<li style="background:#0066ff; color:white; display:table; box-shadow: 6px 3px 8px grey;">').text(message));
});
// Client submits message
$('#chat_form').submit(function(e){
var message = $("#chat_input").val();
server.emit('message', message, curRoom);
$('#chat_input').val(''); // Make input box blank for new message
return false; // prevents refresh of page after submit
});
Http 426表示您正在尝试连接不受支持的web套接字版本。您可以在客户端标头中签入支持的版本。
有关的更多详细信息,请参阅RFC
https://www.rfc-editor.org/rfc/rfc6455#section-4.2.2
相关文章:
- 426状态:带有Node.js的WebSockets
- 使用websockets加载.html和.js
- Websockets聊天消息加密与AES,Crypto.js和.NET
- 如何对node进行纯javascript调用.js它将通过websockets更新仪表板
- 在Node(wss或ws)中使用sip.js和websockets注册
- JS Websockets-仍在重新连接,直到它'It’成功了
- 如何使用node.js和socket.io通过WebSockets流式传输MP3数据
- 在Node.js中通过websockets获取会话细节
- MVC / websockets in node.js
- 未知node.js和websockets服务器停止.谁修改了我的代码
- 使用Node.js和socket.io的WebSockets
- Express.js with websockets
- 如何使用ActionCable websockets处理js加载器
- HTML5/JS和websockets的实时协同绘图白板
- 如何使websockets在node.js中通过代理
- 在没有库的情况下在Node.js中使用websockets的简单方法是什么?
- Ember.js with Websockets / socket.io.Ember API调用/加载实时数据的推荐结构
- 通过websockets的Node.js JSON格式问题
- 如何使用backbone.js与websockets/socket-io/nowjs
- Sails.js websockets在localhost中工作,但在我部署到Openshift后就不工作了